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

Side by Side Diff: source/libvpx/vp8/encoder/rdopt.c

Issue 341293003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 6 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/vp8/encoder/rdopt.h ('k') | source/libvpx/vp8/encoder/x86/denoising_sse2.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) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 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
11 11
12 #include <stdio.h> 12 #include <stdio.h>
13 #include <math.h> 13 #include <math.h>
14 #include <limits.h> 14 #include <limits.h>
15 #include <assert.h> 15 #include <assert.h>
16 #include "vpx_config.h" 16 #include "vpx_config.h"
17 #include "vp8_rtcd.h" 17 #include "vp8_rtcd.h"
18 #include "vp8/common/pragmas.h"
19 #include "tokenize.h" 18 #include "tokenize.h"
20 #include "treewriter.h" 19 #include "treewriter.h"
21 #include "onyx_int.h" 20 #include "onyx_int.h"
22 #include "modecosts.h" 21 #include "modecosts.h"
23 #include "encodeintra.h" 22 #include "encodeintra.h"
24 #include "pickinter.h" 23 #include "pickinter.h"
25 #include "vp8/common/entropymode.h" 24 #include "vp8/common/entropymode.h"
26 #include "vp8/common/reconinter.h" 25 #include "vp8/common/reconinter.h"
27 #include "vp8/common/reconintra4x4.h" 26 #include "vp8/common/reconintra4x4.h"
28 #include "vp8/common/findnearmv.h" 27 #include "vp8/common/findnearmv.h"
(...skipping 1900 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 int i; 1928 int i;
1930 for (i = 0; i < 16; i++) 1929 for (i = 0; i < 16; i++)
1931 { 1930 {
1932 best_mode->bmodes[i] = x->e_mbd.block[i].bmi; 1931 best_mode->bmodes[i] = x->e_mbd.block[i].bmi;
1933 } 1932 }
1934 } 1933 }
1935 } 1934 }
1936 1935
1937 void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, 1936 void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
1938 int recon_uvoffset, int *returnrate, 1937 int recon_uvoffset, int *returnrate,
1939 int *returndistortion, int *returnintra) 1938 int *returndistortion, int *returnintra,
1939 int mb_row, int mb_col)
1940 { 1940 {
1941 BLOCK *b = &x->block[0]; 1941 BLOCK *b = &x->block[0];
1942 BLOCKD *d = &x->e_mbd.block[0]; 1942 BLOCKD *d = &x->e_mbd.block[0];
1943 MACROBLOCKD *xd = &x->e_mbd; 1943 MACROBLOCKD *xd = &x->e_mbd;
1944 int_mv best_ref_mv_sb[2]; 1944 int_mv best_ref_mv_sb[2];
1945 int_mv mode_mv_sb[2][MB_MODE_COUNT]; 1945 int_mv mode_mv_sb[2][MB_MODE_COUNT];
1946 int_mv best_ref_mv; 1946 int_mv best_ref_mv;
1947 int_mv *mode_mv; 1947 int_mv *mode_mv;
1948 MB_PREDICTION_MODE this_mode; 1948 MB_PREDICTION_MODE this_mode;
1949 int num00; 1949 int num00;
(...skipping 17 matching lines...) Expand all
1967 int sr=0; 1967 int sr=0;
1968 1968
1969 unsigned char *plane[4][3]; 1969 unsigned char *plane[4][3];
1970 int ref_frame_map[4]; 1970 int ref_frame_map[4];
1971 int sign_bias = 0; 1971 int sign_bias = 0;
1972 1972
1973 int intra_rd_penalty = 10* vp8_dc_quant(cpi->common.base_qindex, 1973 int intra_rd_penalty = 10* vp8_dc_quant(cpi->common.base_qindex,
1974 cpi->common.y1dc_delta_q); 1974 cpi->common.y1dc_delta_q);
1975 1975
1976 #if CONFIG_TEMPORAL_DENOISING 1976 #if CONFIG_TEMPORAL_DENOISING
1977 unsigned int zero_mv_sse = INT_MAX, best_sse = INT_MAX, 1977 unsigned int zero_mv_sse = UINT_MAX, best_sse = UINT_MAX,
1978 best_rd_sse = INT_MAX; 1978 best_rd_sse = UINT_MAX;
1979 #endif 1979 #endif
1980 1980
1981 mode_mv = mode_mv_sb[sign_bias]; 1981 mode_mv = mode_mv_sb[sign_bias];
1982 best_ref_mv.as_int = 0; 1982 best_ref_mv.as_int = 0;
1983 best_mode.rd = INT_MAX; 1983 best_mode.rd = INT_MAX;
1984 best_mode.yrd = INT_MAX; 1984 best_mode.yrd = INT_MAX;
1985 best_mode.intra_rd = INT_MAX; 1985 best_mode.intra_rd = INT_MAX;
1986 vpx_memset(mode_mv_sb, 0, sizeof(mode_mv_sb)); 1986 vpx_memset(mode_mv_sb, 0, sizeof(mode_mv_sb));
1987 vpx_memset(&best_mode.mbmode, 0, sizeof(best_mode.mbmode)); 1987 vpx_memset(&best_mode.mbmode, 0, sizeof(best_mode.mbmode));
1988 vpx_memset(&best_mode.bmodes, 0, sizeof(best_mode.bmodes)); 1988 vpx_memset(&best_mode.bmodes, 0, sizeof(best_mode.bmodes));
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
2504 x->rd_thresh_mult[best_mode_index] - best_adjustment : 2504 x->rd_thresh_mult[best_mode_index] - best_adjustment :
2505 MIN_THRESHMULT; 2505 MIN_THRESHMULT;
2506 x->rd_threshes[best_mode_index] = 2506 x->rd_threshes[best_mode_index] =
2507 (cpi->rd_baseline_thresh[best_mode_index] >> 7) * 2507 (cpi->rd_baseline_thresh[best_mode_index] >> 7) *
2508 x->rd_thresh_mult[best_mode_index]; 2508 x->rd_thresh_mult[best_mode_index];
2509 } 2509 }
2510 2510
2511 #if CONFIG_TEMPORAL_DENOISING 2511 #if CONFIG_TEMPORAL_DENOISING
2512 if (cpi->oxcf.noise_sensitivity) 2512 if (cpi->oxcf.noise_sensitivity)
2513 { 2513 {
2514 int block_index = mb_row * cpi->common.mb_cols + mb_col;
2514 if (x->best_sse_inter_mode == DC_PRED) 2515 if (x->best_sse_inter_mode == DC_PRED)
2515 { 2516 {
2516 /* No best MV found. */ 2517 /* No best MV found. */
2517 x->best_sse_inter_mode = best_mode.mbmode.mode; 2518 x->best_sse_inter_mode = best_mode.mbmode.mode;
2518 x->best_sse_mv = best_mode.mbmode.mv; 2519 x->best_sse_mv = best_mode.mbmode.mv;
2519 x->need_to_clamp_best_mvs = best_mode.mbmode.need_to_clamp_mvs; 2520 x->need_to_clamp_best_mvs = best_mode.mbmode.need_to_clamp_mvs;
2520 x->best_reference_frame = best_mode.mbmode.ref_frame; 2521 x->best_reference_frame = best_mode.mbmode.ref_frame;
2521 best_sse = best_rd_sse; 2522 best_sse = best_rd_sse;
2522 } 2523 }
2523 vp8_denoiser_denoise_mb(&cpi->denoiser, x, best_sse, zero_mv_sse, 2524 vp8_denoiser_denoise_mb(&cpi->denoiser, x, best_sse, zero_mv_sse,
2524 recon_yoffset, recon_uvoffset); 2525 recon_yoffset, recon_uvoffset,
2526 &cpi->common.lf_info, mb_row, mb_col,
2527 block_index);
2525 2528
2526 2529
2527 /* Reevaluate ZEROMV after denoising. */ 2530 /* Reevaluate ZEROMV after denoising. */
2528 if (best_mode.mbmode.ref_frame == INTRA_FRAME && 2531 if (best_mode.mbmode.ref_frame == INTRA_FRAME &&
2529 x->best_zeromv_reference_frame != INTRA_FRAME) 2532 x->best_zeromv_reference_frame != INTRA_FRAME)
2530 { 2533 {
2531 int this_rd = INT_MAX; 2534 int this_rd = INT_MAX;
2532 int disable_skip = 0; 2535 int disable_skip = 0;
2533 int other_cost = 0; 2536 int other_cost = 0;
2534 int this_ref_frame = x->best_zeromv_reference_frame; 2537 int this_ref_frame = x->best_zeromv_reference_frame;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
2630 x->e_mbd.mode_info_context->mbmi.mode = B_PRED; 2633 x->e_mbd.mode_info_context->mbmi.mode = B_PRED;
2631 rate += rate4x4; 2634 rate += rate4x4;
2632 } 2635 }
2633 else 2636 else
2634 { 2637 {
2635 rate += rate16x16; 2638 rate += rate16x16;
2636 } 2639 }
2637 2640
2638 *rate_ = rate; 2641 *rate_ = rate;
2639 } 2642 }
OLDNEW
« no previous file with comments | « source/libvpx/vp8/encoder/rdopt.h ('k') | source/libvpx/vp8/encoder/x86/denoising_sse2.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698