summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2014-03-13 15:51:36 -0700
committerJingning Han <jingning@google.com>2014-03-13 15:53:40 -0700
commit0d394299143f8e4606ce689c508a539c53219458 (patch)
tree1b26de251fe750946cfbd29180948d7722f32fac
parent3d6286c73d391498ed4939028e57123fae3b3035 (diff)
downloadlibvpx-0d394299143f8e4606ce689c508a539c53219458.tar
libvpx-0d394299143f8e4606ce689c508a539c53219458.tar.gz
libvpx-0d394299143f8e4606ce689c508a539c53219458.tar.bz2
libvpx-0d394299143f8e4606ce689c508a539c53219458.zip
Refactor the non-RD partition decision process
Combine the common variables and functions used by different speed features. Change-Id: Ifd1fa86200edbcc9e50b3fc3b1ba8a275bc3c17f
-rw-r--r--vp9/encoder/vp9_encodeframe.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index 95b5dc54b..3b22c3f9e 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -2836,35 +2836,22 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile,
mi_col += MI_BLOCK_SIZE) {
int dummy_rate;
int64_t dummy_dist;
+ const int idx_str = cm->mode_info_stride * mi_row + mi_col;
+ MODE_INFO **mi_8x8 = cm->mi_grid_visible + idx_str;
+ BLOCK_SIZE bsize = cpi->sf.partition_search_type == FIXED_PARTITION ?
+ cpi->sf.always_this_block_size :
+ get_nonrd_var_based_fixed_partition(cpi, mi_row, mi_col);
cpi->mb.source_variance = UINT_MAX;
- if (cpi->sf.partition_search_type == FIXED_PARTITION) {
- const int idx_str = cm->mode_info_stride * mi_row + mi_col;
- MODE_INFO **mi_8x8 = cm->mi_grid_visible + idx_str;
- set_fixed_partitioning(cpi, tile, mi_8x8, mi_row, mi_col,
- cpi->sf.always_this_block_size);
- nonrd_use_partition(cpi, tile, mi_8x8, tp, mi_row, mi_col, BLOCK_64X64,
- &dummy_rate, &dummy_dist);
- } else if (cpi->sf.partition_search_type == VAR_BASED_FIXED_PARTITION) {
- BLOCK_SIZE bsize = get_nonrd_var_based_fixed_partition(cpi, mi_row,
- mi_col);
- const int idx_str = cm->mode_info_stride * mi_row + mi_col;
- MODE_INFO **mi_8x8 = cm->mi_grid_visible + idx_str;
- set_fixed_partitioning(cpi, tile, mi_8x8, mi_row, mi_col, bsize);
- nonrd_use_partition(cpi, tile, mi_8x8, tp, mi_row, mi_col, BLOCK_64X64,
- &dummy_rate, &dummy_dist);
- } else if (cpi->sf.partition_search_type == VAR_BASED_PARTITION) {
- const int idx_str = cpi->common.mode_info_stride * mi_row + mi_col;
- MODE_INFO **mi_8x8 = cpi->common.mi_grid_visible + idx_str;
- int dummy_rate;
- int64_t dummy_dist;
+ // Set the partition type of the 64X64 block
+ if (cpi->sf.partition_search_type == VAR_BASED_PARTITION)
choose_partitioning(cpi, tile, mi_row, mi_col);
- nonrd_use_partition(cpi, tile, mi_8x8, tp, mi_row, mi_col, BLOCK_64X64,
- &dummy_rate, &dummy_dist);
- } else {
- assert(0);
- }
+ else
+ set_fixed_partitioning(cpi, tile, mi_8x8, mi_row, mi_col, bsize);
+
+ nonrd_use_partition(cpi, tile, mi_8x8, tp, mi_row, mi_col, BLOCK_64X64,
+ &dummy_rate, &dummy_dist);
}
}
// end RTC play code