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 |
(...skipping 1809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1820 MACROBLOCKD *const xd = &cpi->mb.e_mbd; | 1820 MACROBLOCKD *const xd = &cpi->mb.e_mbd; |
1821 MODE_INFO **mi_8x8 = xd->mi; | 1821 MODE_INFO **mi_8x8 = xd->mi; |
1822 const int left_in_image = xd->left_available && mi_8x8[-1]; | 1822 const int left_in_image = xd->left_available && mi_8x8[-1]; |
1823 const int above_in_image = xd->up_available && | 1823 const int above_in_image = xd->up_available && |
1824 mi_8x8[-xd->mi_stride]; | 1824 mi_8x8[-xd->mi_stride]; |
1825 int row8x8_remaining = tile->mi_row_end - mi_row; | 1825 int row8x8_remaining = tile->mi_row_end - mi_row; |
1826 int col8x8_remaining = tile->mi_col_end - mi_col; | 1826 int col8x8_remaining = tile->mi_col_end - mi_col; |
1827 int bh, bw; | 1827 int bh, bw; |
1828 BLOCK_SIZE min_size = BLOCK_32X32; | 1828 BLOCK_SIZE min_size = BLOCK_32X32; |
1829 BLOCK_SIZE max_size = BLOCK_8X8; | 1829 BLOCK_SIZE max_size = BLOCK_8X8; |
1830 int bsl = mi_width_log2_lookup[BLOCK_64X64]; | 1830 int bsl = mi_width_log2(BLOCK_64X64); |
1831 const int search_range_ctrl = (((mi_row + mi_col) >> bsl) + | 1831 const int search_range_ctrl = (((mi_row + mi_col) >> bsl) + |
1832 get_chessboard_index(cm)) % 2; | 1832 get_chessboard_index(cm)) % 2; |
1833 // Trap case where we do not have a prediction. | 1833 // Trap case where we do not have a prediction. |
1834 if (search_range_ctrl && | 1834 if (search_range_ctrl && |
1835 (left_in_image || above_in_image || cm->frame_type != KEY_FRAME)) { | 1835 (left_in_image || above_in_image || cm->frame_type != KEY_FRAME)) { |
1836 int block; | 1836 int block; |
1837 MODE_INFO **mi; | 1837 MODE_INFO **mi; |
1838 BLOCK_SIZE sb_type; | 1838 BLOCK_SIZE sb_type; |
1839 | 1839 |
1840 // Find the min and max partition sizes used in the left SB64. | 1840 // Find the min and max partition sizes used in the left SB64. |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1969 int64_t stop_thresh = 4096; | 1969 int64_t stop_thresh = 4096; |
1970 int64_t stop_thresh_rd; | 1970 int64_t stop_thresh_rd; |
1971 | 1971 |
1972 best_rate = this_rate; | 1972 best_rate = this_rate; |
1973 best_dist = this_dist; | 1973 best_dist = this_dist; |
1974 best_rd = sum_rd; | 1974 best_rd = sum_rd; |
1975 if (bsize >= BLOCK_8X8) | 1975 if (bsize >= BLOCK_8X8) |
1976 pc_tree->partitioning = PARTITION_NONE; | 1976 pc_tree->partitioning = PARTITION_NONE; |
1977 | 1977 |
1978 // Adjust threshold according to partition size. | 1978 // Adjust threshold according to partition size. |
1979 stop_thresh >>= 8 - (b_width_log2_lookup[bsize] + | 1979 stop_thresh >>= 8 - (b_width_log2(bsize) + |
1980 b_height_log2_lookup[bsize]); | 1980 b_height_log2(bsize)); |
1981 | 1981 |
1982 stop_thresh_rd = RDCOST(x->rdmult, x->rddiv, 0, stop_thresh); | 1982 stop_thresh_rd = RDCOST(x->rdmult, x->rddiv, 0, stop_thresh); |
1983 // If obtained distortion is very small, choose current partition | 1983 // If obtained distortion is very small, choose current partition |
1984 // and stop splitting. | 1984 // and stop splitting. |
1985 if (!x->e_mbd.lossless && best_rd < stop_thresh_rd) { | 1985 if (!x->e_mbd.lossless && best_rd < stop_thresh_rd) { |
1986 do_split = 0; | 1986 do_split = 0; |
1987 do_rect = 0; | 1987 do_rect = 0; |
1988 } | 1988 } |
1989 } | 1989 } |
1990 } | 1990 } |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2541 int64_t stop_thresh = 4096; | 2541 int64_t stop_thresh = 4096; |
2542 int64_t stop_thresh_rd; | 2542 int64_t stop_thresh_rd; |
2543 | 2543 |
2544 best_rate = this_rate; | 2544 best_rate = this_rate; |
2545 best_dist = this_dist; | 2545 best_dist = this_dist; |
2546 best_rd = sum_rd; | 2546 best_rd = sum_rd; |
2547 if (bsize >= BLOCK_8X8) | 2547 if (bsize >= BLOCK_8X8) |
2548 pc_tree->partitioning = PARTITION_NONE; | 2548 pc_tree->partitioning = PARTITION_NONE; |
2549 | 2549 |
2550 // Adjust threshold according to partition size. | 2550 // Adjust threshold according to partition size. |
2551 stop_thresh >>= 8 - (b_width_log2_lookup[bsize] + | 2551 stop_thresh >>= 8 - (b_width_log2(bsize) + |
2552 b_height_log2_lookup[bsize]); | 2552 b_height_log2(bsize)); |
2553 | 2553 |
2554 stop_thresh_rd = RDCOST(x->rdmult, x->rddiv, 0, stop_thresh); | 2554 stop_thresh_rd = RDCOST(x->rdmult, x->rddiv, 0, stop_thresh); |
2555 // If obtained distortion is very small, choose current partition | 2555 // If obtained distortion is very small, choose current partition |
2556 // and stop splitting. | 2556 // and stop splitting. |
2557 if (!x->e_mbd.lossless && best_rd < stop_thresh_rd) { | 2557 if (!x->e_mbd.lossless && best_rd < stop_thresh_rd) { |
2558 do_split = 0; | 2558 do_split = 0; |
2559 do_rect = 0; | 2559 do_rect = 0; |
2560 } | 2560 } |
2561 } | 2561 } |
2562 } | 2562 } |
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3390 tx_size = (bsize >= BLOCK_8X8) ? mbmi->tx_size : TX_4X4; | 3390 tx_size = (bsize >= BLOCK_8X8) ? mbmi->tx_size : TX_4X4; |
3391 } | 3391 } |
3392 | 3392 |
3393 for (y = 0; y < mi_height; y++) | 3393 for (y = 0; y < mi_height; y++) |
3394 for (x = 0; x < mi_width; x++) | 3394 for (x = 0; x < mi_width; x++) |
3395 if (mi_col + x < cm->mi_cols && mi_row + y < cm->mi_rows) | 3395 if (mi_col + x < cm->mi_cols && mi_row + y < cm->mi_rows) |
3396 mi_8x8[mis * y + x]->mbmi.tx_size = tx_size; | 3396 mi_8x8[mis * y + x]->mbmi.tx_size = tx_size; |
3397 } | 3397 } |
3398 } | 3398 } |
3399 } | 3399 } |
OLD | NEW |