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

Side by Side Diff: source/libvpx/vp9/encoder/vp9_pickmode.c

Issue 390713002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: libvpx: Pull from upstream Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_mcomp.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 99
100 mi->mbmi.mode_context[ref_frame] = counter_to_context[context_counter]; 100 mi->mbmi.mode_context[ref_frame] = counter_to_context[context_counter];
101 101
102 // Clamp vectors 102 // Clamp vectors
103 for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) 103 for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i)
104 clamp_mv_ref(&mv_ref_list[i].as_mv, xd); 104 clamp_mv_ref(&mv_ref_list[i].as_mv, xd);
105 105
106 return const_motion; 106 return const_motion;
107 } 107 }
108 108
109 static void full_pixel_motion_search(VP9_COMP *cpi, MACROBLOCK *x, 109 static int combined_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
110 BLOCK_SIZE bsize, int mi_row, int mi_col, 110 BLOCK_SIZE bsize, int mi_row, int mi_col,
111 int_mv *tmp_mv, int *rate_mv) { 111 int_mv *tmp_mv, int *rate_mv,
112 int64_t best_rd_sofar) {
112 MACROBLOCKD *xd = &x->e_mbd; 113 MACROBLOCKD *xd = &x->e_mbd;
113 MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; 114 MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
114 struct buf_2d backup_yv12[MAX_MB_PLANE] = {{0, 0}}; 115 struct buf_2d backup_yv12[MAX_MB_PLANE] = {{0, 0}};
115 int step_param; 116 const int step_param = cpi->sf.mv.fullpel_search_step_param;
116 int sadpb = x->sadperbit16; 117 const int sadpb = x->sadperbit16;
117 MV mvp_full; 118 MV mvp_full;
118 int ref = mbmi->ref_frame[0]; 119 const int ref = mbmi->ref_frame[0];
119 const MV ref_mv = mbmi->ref_mvs[ref][0].as_mv; 120 const MV ref_mv = mbmi->ref_mvs[ref][0].as_mv;
120 int i; 121 int dis;
121 122 int rate_mode;
122 int tmp_col_min = x->mv_col_min; 123 const int tmp_col_min = x->mv_col_min;
123 int tmp_col_max = x->mv_col_max; 124 const int tmp_col_max = x->mv_col_max;
124 int tmp_row_min = x->mv_row_min; 125 const int tmp_row_min = x->mv_row_min;
125 int tmp_row_max = x->mv_row_max; 126 const int tmp_row_max = x->mv_row_max;
126 127 int rv = 0;
127 const YV12_BUFFER_CONFIG *scaled_ref_frame = vp9_get_scaled_ref_frame(cpi, 128 const YV12_BUFFER_CONFIG *scaled_ref_frame = vp9_get_scaled_ref_frame(cpi,
128 ref); 129 ref);
130 if (cpi->common.show_frame &&
131 (x->pred_mv_sad[ref] >> 3) > x->pred_mv_sad[LAST_FRAME])
132 return rv;
133
129 if (scaled_ref_frame) { 134 if (scaled_ref_frame) {
130 int i; 135 int i;
131 // Swap out the reference frame for a version that's been scaled to 136 // Swap out the reference frame for a version that's been scaled to
132 // match the resolution of the current frame, allowing the existing 137 // match the resolution of the current frame, allowing the existing
133 // motion search code to be used without additional modifications. 138 // motion search code to be used without additional modifications.
134 for (i = 0; i < MAX_MB_PLANE; i++) 139 for (i = 0; i < MAX_MB_PLANE; i++)
135 backup_yv12[i] = xd->plane[i].pre[0]; 140 backup_yv12[i] = xd->plane[i].pre[0];
136
137 vp9_setup_pre_planes(xd, 0, scaled_ref_frame, mi_row, mi_col, NULL); 141 vp9_setup_pre_planes(xd, 0, scaled_ref_frame, mi_row, mi_col, NULL);
138 } 142 }
139
140 vp9_set_mv_search_range(x, &ref_mv); 143 vp9_set_mv_search_range(x, &ref_mv);
141 144
142 // TODO(jingning) exploiting adaptive motion search control in non-RD
143 // mode decision too.
144 step_param = cpi->sf.mv.fullpel_search_step_param;
145
146 for (i = LAST_FRAME; i <= LAST_FRAME && cpi->common.show_frame; ++i) {
147 if ((x->pred_mv_sad[ref] >> 3) > x->pred_mv_sad[i]) {
148 tmp_mv->as_int = INVALID_MV;
149
150 if (scaled_ref_frame) {
151 int i;
152 for (i = 0; i < MAX_MB_PLANE; i++)
153 xd->plane[i].pre[0] = backup_yv12[i];
154 }
155 return;
156 }
157 }
158 assert(x->mv_best_ref_index[ref] <= 2); 145 assert(x->mv_best_ref_index[ref] <= 2);
159 if (x->mv_best_ref_index[ref] < 2) 146 if (x->mv_best_ref_index[ref] < 2)
160 mvp_full = mbmi->ref_mvs[ref][x->mv_best_ref_index[ref]].as_mv; 147 mvp_full = mbmi->ref_mvs[ref][x->mv_best_ref_index[ref]].as_mv;
161 else 148 else
162 mvp_full = x->pred_mv[ref]; 149 mvp_full = x->pred_mv[ref];
163 150
164 mvp_full.col >>= 3; 151 mvp_full.col >>= 3;
165 mvp_full.row >>= 3; 152 mvp_full.row >>= 3;
166 153
167 vp9_full_pixel_search(cpi, x, bsize, &mvp_full, step_param, sadpb, &ref_mv, 154 vp9_full_pixel_search(cpi, x, bsize, &mvp_full, step_param, sadpb, &ref_mv,
168 &tmp_mv->as_mv, INT_MAX, 0); 155 &tmp_mv->as_mv, INT_MAX, 0);
169 156
170 x->mv_col_min = tmp_col_min; 157 x->mv_col_min = tmp_col_min;
171 x->mv_col_max = tmp_col_max; 158 x->mv_col_max = tmp_col_max;
172 x->mv_row_min = tmp_row_min; 159 x->mv_row_min = tmp_row_min;
173 x->mv_row_max = tmp_row_max; 160 x->mv_row_max = tmp_row_max;
174 161
162 // calculate the bit cost on motion vector
163 mvp_full.row = tmp_mv->as_mv.row * 8;
164 mvp_full.col = tmp_mv->as_mv.col * 8;
165
166 *rate_mv = vp9_mv_bit_cost(&mvp_full, &ref_mv,
167 x->nmvjointcost, x->mvcost, MV_COST_WEIGHT);
168
169 rate_mode = cpi->inter_mode_cost[mbmi->mode_context[ref]]
170 [INTER_OFFSET(NEWMV)];
171 rv = !(RDCOST(x->rdmult, x->rddiv, (*rate_mv + rate_mode), 0) >
172 best_rd_sofar);
173
174 if (rv) {
175 cpi->find_fractional_mv_step(x, &tmp_mv->as_mv, &ref_mv,
176 cpi->common.allow_high_precision_mv,
177 x->errorperbit,
178 &cpi->fn_ptr[bsize],
179 cpi->sf.mv.subpel_force_stop,
180 cpi->sf.mv.subpel_iters_per_step,
181 x->nmvjointcost, x->mvcost,
182 &dis, &x->pred_sse[ref], NULL, 0, 0);
183 x->pred_mv[ref] = tmp_mv->as_mv;
184 }
185
175 if (scaled_ref_frame) { 186 if (scaled_ref_frame) {
176 int i; 187 int i;
177 for (i = 0; i < MAX_MB_PLANE; i++) 188 for (i = 0; i < MAX_MB_PLANE; i++)
178 xd->plane[i].pre[0] = backup_yv12[i]; 189 xd->plane[i].pre[0] = backup_yv12[i];
179 } 190 }
180 191 return rv;
181 // calculate the bit cost on motion vector
182 mvp_full.row = tmp_mv->as_mv.row * 8;
183 mvp_full.col = tmp_mv->as_mv.col * 8;
184 *rate_mv = vp9_mv_bit_cost(&mvp_full, &ref_mv,
185 x->nmvjointcost, x->mvcost, MV_COST_WEIGHT);
186 } 192 }
187 193
188 static void sub_pixel_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
189 BLOCK_SIZE bsize, int mi_row, int mi_col,
190 MV *tmp_mv) {
191 MACROBLOCKD *xd = &x->e_mbd;
192 MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
193 struct buf_2d backup_yv12[MAX_MB_PLANE] = {{0, 0}};
194 int ref = mbmi->ref_frame[0];
195 MV ref_mv = mbmi->ref_mvs[ref][0].as_mv;
196 int dis;
197
198 const YV12_BUFFER_CONFIG *scaled_ref_frame = vp9_get_scaled_ref_frame(cpi,
199 ref);
200 if (scaled_ref_frame) {
201 int i;
202 // Swap out the reference frame for a version that's been scaled to
203 // match the resolution of the current frame, allowing the existing
204 // motion search code to be used without additional modifications.
205 for (i = 0; i < MAX_MB_PLANE; i++)
206 backup_yv12[i] = xd->plane[i].pre[0];
207
208 vp9_setup_pre_planes(xd, 0, scaled_ref_frame, mi_row, mi_col, NULL);
209 }
210
211 cpi->find_fractional_mv_step(x, tmp_mv, &ref_mv,
212 cpi->common.allow_high_precision_mv,
213 x->errorperbit,
214 &cpi->fn_ptr[bsize],
215 cpi->sf.mv.subpel_force_stop,
216 cpi->sf.mv.subpel_iters_per_step,
217 x->nmvjointcost, x->mvcost,
218 &dis, &x->pred_sse[ref]);
219
220 if (scaled_ref_frame) {
221 int i;
222 for (i = 0; i < MAX_MB_PLANE; i++)
223 xd->plane[i].pre[0] = backup_yv12[i];
224 }
225
226 x->pred_mv[ref] = *tmp_mv;
227 }
228 194
229 static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize, 195 static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize,
230 MACROBLOCK *x, MACROBLOCKD *xd, 196 MACROBLOCK *x, MACROBLOCKD *xd,
231 int *out_rate_sum, int64_t *out_dist_sum, 197 int *out_rate_sum, int64_t *out_dist_sum,
232 unsigned int *var_y, unsigned int *sse_y) { 198 unsigned int *var_y, unsigned int *sse_y) {
233 // Note our transform coeffs are 8 times an orthogonal transform. 199 // Note our transform coeffs are 8 times an orthogonal transform.
234 // Hence quantizer step is also 8 times. To get effective quantizer 200 // Hence quantizer step is also 8 times. To get effective quantizer
235 // we need to divide by 8 before sending to modeling function. 201 // we need to divide by 8 before sending to modeling function.
236 unsigned int sse; 202 unsigned int sse;
237 int rate; 203 int rate;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 // The encode_breakout input 280 // The encode_breakout input
315 const unsigned int min_thresh = 281 const unsigned int min_thresh =
316 MIN(((unsigned int)x->encode_breakout << 4), max_thresh); 282 MIN(((unsigned int)x->encode_breakout << 4), max_thresh);
317 283
318 // Calculate threshold according to dequant value. 284 // Calculate threshold according to dequant value.
319 thresh_ac = (xd->plane[0].dequant[1] * xd->plane[0].dequant[1]) / 9; 285 thresh_ac = (xd->plane[0].dequant[1] * xd->plane[0].dequant[1]) / 9;
320 thresh_ac = clamp(thresh_ac, min_thresh, max_thresh); 286 thresh_ac = clamp(thresh_ac, min_thresh, max_thresh);
321 287
322 // Adjust ac threshold according to partition size. 288 // Adjust ac threshold according to partition size.
323 thresh_ac >>= 289 thresh_ac >>=
324 8 - (b_width_log2_lookup[bsize] + b_height_log2_lookup[bsize]); 290 8 - (b_width_log2(bsize) + b_height_log2(bsize));
325 291
326 thresh_dc = (xd->plane[0].dequant[0] * xd->plane[0].dequant[0] >> 6); 292 thresh_dc = (xd->plane[0].dequant[0] * xd->plane[0].dequant[0] >> 6);
327 } else { 293 } else {
328 thresh_ac = 0; 294 thresh_ac = 0;
329 thresh_dc = 0; 295 thresh_dc = 0;
330 } 296 }
331 297
332 // Y skipping condition checking for ac and dc. 298 // Y skipping condition checking for ac and dc.
333 if (var <= thresh_ac && (sse - var) <= thresh_dc) { 299 if (var <= thresh_ac && (sse - var) <= thresh_dc) {
334 unsigned int sse_u, sse_v; 300 unsigned int sse_u, sse_v;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 const int64_t inter_mode_thresh = RDCOST(x->rdmult, x->rddiv, 380 const int64_t inter_mode_thresh = RDCOST(x->rdmult, x->rddiv,
415 intra_cost_penalty, 0); 381 intra_cost_penalty, 0);
416 const int64_t intra_mode_cost = 50; 382 const int64_t intra_mode_cost = 50;
417 383
418 unsigned char segment_id = mbmi->segment_id; 384 unsigned char segment_id = mbmi->segment_id;
419 const int *const rd_threshes = cpi->rd.threshes[segment_id][bsize]; 385 const int *const rd_threshes = cpi->rd.threshes[segment_id][bsize];
420 const int *const rd_thresh_freq_fact = cpi->rd.thresh_freq_fact[bsize]; 386 const int *const rd_thresh_freq_fact = cpi->rd.thresh_freq_fact[bsize];
421 // Mode index conversion form THR_MODES to PREDICTION_MODE for a ref frame. 387 // Mode index conversion form THR_MODES to PREDICTION_MODE for a ref frame.
422 int mode_idx[MB_MODE_COUNT] = {0}; 388 int mode_idx[MB_MODE_COUNT] = {0};
423 INTERP_FILTER filter_ref = cm->interp_filter; 389 INTERP_FILTER filter_ref = cm->interp_filter;
424 int bsl = mi_width_log2_lookup[bsize]; 390 int bsl = mi_width_log2(bsize);
425 const int pred_filter_search = cm->interp_filter == SWITCHABLE ? 391 const int pred_filter_search = cm->interp_filter == SWITCHABLE ?
426 (((mi_row + mi_col) >> bsl) + get_chessboard_index(cm)) % 2 : 0; 392 (((mi_row + mi_col) >> bsl) + get_chessboard_index(cm)) % 2 : 0;
427 int const_motion[MAX_REF_FRAMES] = { 0 }; 393 int const_motion[MAX_REF_FRAMES] = { 0 };
428 394
429 // For speed 6, the result of interp filter is reused later in actual encoding 395 // For speed 6, the result of interp filter is reused later in actual encoding
430 // process. 396 // process.
431 int bh = num_4x4_blocks_high_lookup[bsize] << 2; 397 int bh = num_4x4_blocks_high_lookup[bsize] << 2;
432 int bw = num_4x4_blocks_wide_lookup[bsize] << 2; 398 int bw = num_4x4_blocks_wide_lookup[bsize] << 2;
433 int pixels_in_block = bh * bw; 399 int pixels_in_block = bh * bw;
434 // tmp[3] points to dst buffer, and the other 3 point to allocated buffers. 400 // tmp[3] points to dst buffer, and the other 3 point to allocated buffers.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 continue; 503 continue;
538 504
539 if (!(cpi->sf.inter_mode_mask[bsize] & (1 << this_mode))) 505 if (!(cpi->sf.inter_mode_mask[bsize] & (1 << this_mode)))
540 continue; 506 continue;
541 507
542 if (rd_less_than_thresh(best_rd, rd_threshes[mode_idx[this_mode]], 508 if (rd_less_than_thresh(best_rd, rd_threshes[mode_idx[this_mode]],
543 rd_thresh_freq_fact[this_mode])) 509 rd_thresh_freq_fact[this_mode]))
544 continue; 510 continue;
545 511
546 if (this_mode == NEWMV) { 512 if (this_mode == NEWMV) {
547 int rate_mode = 0;
548 if (this_rd < (int64_t)(1 << num_pels_log2_lookup[bsize])) 513 if (this_rd < (int64_t)(1 << num_pels_log2_lookup[bsize]))
549 continue; 514 continue;
550 515 if (!combined_motion_search(cpi, x, bsize, mi_row, mi_col,
551 full_pixel_motion_search(cpi, x, bsize, mi_row, mi_col, 516 &frame_mv[NEWMV][ref_frame],
552 &frame_mv[NEWMV][ref_frame], &rate_mv); 517 &rate_mv, best_rd))
553
554 if (frame_mv[NEWMV][ref_frame].as_int == INVALID_MV)
555 continue; 518 continue;
556
557 rate_mode = cpi->inter_mode_cost[mbmi->mode_context[ref_frame]]
558 [INTER_OFFSET(this_mode)];
559 if (RDCOST(x->rdmult, x->rddiv, rate_mv + rate_mode, 0) > best_rd)
560 continue;
561
562 sub_pixel_motion_search(cpi, x, bsize, mi_row, mi_col,
563 &frame_mv[NEWMV][ref_frame].as_mv);
564 } 519 }
565 520
566 if (this_mode != NEARESTMV) 521 if (this_mode != NEARESTMV &&
567 if (frame_mv[this_mode][ref_frame].as_int == 522 frame_mv[this_mode][ref_frame].as_int ==
568 frame_mv[NEARESTMV][ref_frame].as_int) 523 frame_mv[NEARESTMV][ref_frame].as_int)
569 continue; 524 continue;
570 525
571 mbmi->mode = this_mode; 526 mbmi->mode = this_mode;
572 mbmi->mv[0].as_int = frame_mv[this_mode][ref_frame].as_int; 527 mbmi->mv[0].as_int = frame_mv[this_mode][ref_frame].as_int;
573 528
574 // Search for the best prediction filter type, when the resulting 529 // Search for the best prediction filter type, when the resulting
575 // motion vector is at sub-pixel accuracy level for luma component, i.e., 530 // motion vector is at sub-pixel accuracy level for luma component, i.e.,
576 // the last three bits are all zeros. 531 // the last three bits are all zeros.
577 if (cpi->sf.reuse_inter_pred_sby) { 532 if (cpi->sf.reuse_inter_pred_sby) {
578 if (this_mode == NEARESTMV) { 533 if (this_mode == NEARESTMV) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 xd->mi[0]->bmi[0].as_mv[0].as_int = mbmi->mv[0].as_int; 668 xd->mi[0]->bmi[0].as_mv[0].as_int = mbmi->mv[0].as_int;
714 x->skip_txfm = skip_txfm; 669 x->skip_txfm = skip_txfm;
715 670
716 // Perform intra prediction search, if the best SAD is above a certain 671 // Perform intra prediction search, if the best SAD is above a certain
717 // threshold. 672 // threshold.
718 if (!x->skip && best_rd > inter_mode_thresh && 673 if (!x->skip && best_rd > inter_mode_thresh &&
719 bsize <= cpi->sf.max_intra_bsize) { 674 bsize <= cpi->sf.max_intra_bsize) {
720 int i, j; 675 int i, j;
721 const int width = num_4x4_blocks_wide_lookup[bsize]; 676 const int width = num_4x4_blocks_wide_lookup[bsize];
722 const int height = num_4x4_blocks_high_lookup[bsize]; 677 const int height = num_4x4_blocks_high_lookup[bsize];
678 const BLOCK_SIZE bsize_tx = txsize_to_bsize[mbmi->tx_size];
723 679
724 int rate2 = 0; 680 int rate2 = 0;
725 int64_t dist2 = 0; 681 int64_t dist2 = 0;
726 const int dst_stride = pd->dst.stride; 682 const int dst_stride = pd->dst.stride;
727 const int src_stride = p->src.stride; 683 const int src_stride = p->src.stride;
728 int block_idx = 0; 684 int block_idx = 0;
729 685
730 TX_SIZE tmp_tx_size = MIN(max_txsize_lookup[bsize], 686 TX_SIZE tmp_tx_size = MIN(max_txsize_lookup[bsize],
731 tx_mode_to_biggest_tx_size[cpi->common.tx_mode]); 687 tx_mode_to_biggest_tx_size[cpi->common.tx_mode]);
732 const int step = 1 << tmp_tx_size; 688 const int step = 1 << tmp_tx_size;
733 689
734 for (this_mode = DC_PRED; this_mode <= DC_PRED; ++this_mode) { 690 for (this_mode = DC_PRED; this_mode <= DC_PRED; ++this_mode) {
735 if (cpi->sf.reuse_inter_pred_sby) { 691 if (cpi->sf.reuse_inter_pred_sby) {
736 pd->dst.buf = tmp[0].data; 692 pd->dst.buf = tmp[0].data;
737 pd->dst.stride = bw; 693 pd->dst.stride = bw;
738 } 694 }
739 695
740 for (j = 0; j < height; j += step) { 696 for (j = 0; j < height; j += step) {
741 for (i = 0; i < width; i += step) { 697 for (i = 0; i < width; i += step) {
742 vp9_predict_intra_block(xd, block_idx, b_width_log2(bsize), 698 vp9_predict_intra_block(xd, block_idx, b_width_log2(bsize),
743 tmp_tx_size, this_mode, 699 tmp_tx_size, this_mode,
744 &p->src.buf[4 * (j * dst_stride + i)], 700 &p->src.buf[4 * (j * dst_stride + i)],
745 src_stride, 701 src_stride,
746 &pd->dst.buf[4 * (j * dst_stride + i)], 702 &pd->dst.buf[4 * (j * dst_stride + i)],
747 dst_stride, i, j, 0); 703 dst_stride, i, j, 0);
748 model_rd_for_sb_y(cpi, bsize, x, xd, &rate, &dist, &var_y, &sse_y); 704 model_rd_for_sb_y(cpi, bsize_tx, x, xd, &rate, &dist, &var_y, &sse_y);
749 rate2 += rate; 705 rate2 += rate;
750 dist2 += dist; 706 dist2 += dist;
751 ++block_idx; 707 ++block_idx;
752 } 708 }
753 } 709 }
754 710
755 rate = rate2; 711 rate = rate2;
756 dist = dist2; 712 dist = dist2;
757 713
758 rate += cpi->mbmode_cost[this_mode]; 714 rate += cpi->mbmode_cost[this_mode];
(...skipping 19 matching lines...) Expand all
778 } 734 }
779 735
780 #if CONFIG_DENOISING 736 #if CONFIG_DENOISING
781 if (cpi->oxcf.noise_sensitivity > 0) { 737 if (cpi->oxcf.noise_sensitivity > 0) {
782 vp9_denoiser_denoise(&cpi->denoiser, x, mi_row, mi_col, bsize); 738 vp9_denoiser_denoise(&cpi->denoiser, x, mi_row, mi_col, bsize);
783 } 739 }
784 #endif 740 #endif
785 741
786 return INT64_MAX; 742 return INT64_MAX;
787 } 743 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_mcomp.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698