| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |