summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2014-02-28 13:02:58 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-02-28 13:02:58 -0800
commitfa9e6e889039a9a142a773ba290df7d86f39482b (patch)
tree8d6081845f487a1bec55126e3e17cf5c5308a0c4 /vp9/encoder/vp9_encodeframe.c
parentda798043c512182f8fcf3cdc04b9f6c64617e741 (diff)
parentbf5e9221d69eddbd77ca336c82a14a05c08e9ab8 (diff)
downloadlibvpx-fa9e6e889039a9a142a773ba290df7d86f39482b.tar
libvpx-fa9e6e889039a9a142a773ba290df7d86f39482b.tar.gz
libvpx-fa9e6e889039a9a142a773ba290df7d86f39482b.tar.bz2
libvpx-fa9e6e889039a9a142a773ba290df7d86f39482b.zip
Merge "Fix potential invalid partition size use"
Diffstat (limited to 'vp9/encoder/vp9_encodeframe.c')
-rw-r--r--vp9/encoder/vp9_encodeframe.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index 46072a2de..bba0c535c 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -995,7 +995,7 @@ static BLOCK_SIZE find_partition_size(BLOCK_SIZE bsize,
if (rows_left <= 0 || cols_left <= 0) {
return MIN(bsize, BLOCK_8X8);
} else {
- for (; bsize > 0; --bsize) {
+ for (; bsize > 0; bsize -= 3) {
*bh = num_8x8_blocks_high_lookup[bsize];
*bw = num_8x8_blocks_wide_lookup[bsize];
if ((*bh <= rows_left) && (*bw <= cols_left)) {
@@ -2332,8 +2332,6 @@ static void nonrd_use_partition(VP9_COMP *cpi, const TileInfo *const tile,
int mis = cm->mode_info_stride;
int br, bc;
int i, j;
- int chosen_rate = INT_MAX;
- int64_t chosen_dist = INT64_MAX;
MB_PREDICTION_MODE mode = DC_PRED;
int rows = MIN(MI_BLOCK_SIZE, tile->mi_row_end - mi_row);
int cols = MIN(MI_BLOCK_SIZE, tile->mi_col_end - mi_col);
@@ -2354,6 +2352,7 @@ static void nonrd_use_partition(VP9_COMP *cpi, const TileInfo *const tile,
BLOCK_SIZE bs = find_partition_size(bsize, rows - br, cols - bc,
&bh, &bw);
+
set_offsets(cpi, tile, row, col, bs);
if (cm->frame_type != KEY_FRAME)
@@ -2365,16 +2364,10 @@ static void nonrd_use_partition(VP9_COMP *cpi, const TileInfo *const tile,
*dist += bdist;
for (j = 0; j < bh; ++j)
- for (i = 0; i < bw; ++i) {
+ for (i = 0; i < bw; ++i)
xd->mi_8x8[j * mis + i] = xd->mi_8x8[0];
- }
}
}
-
- *rate = chosen_rate;
- *dist = chosen_dist;
-
- encode_sb_rt(cpi, tile, tp, mi_row, mi_col, 1, BLOCK_64X64);
}
static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile,
@@ -2397,6 +2390,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile,
nonrd_use_partition(cpi, tile, tp, mi_row, mi_col,
cpi->sf.always_this_block_size,
&dummy_rate, &dummy_dist);
+ encode_sb_rt(cpi, tile, tp, mi_row, mi_col, 1, BLOCK_64X64);
} else if (cpi->sf.partition_search_type == VAR_BASED_FIXED_PARTITION ||
cpi->sf.partition_search_type == VAR_BASED_PARTITION) {
// TODO(debargha): Implement VAR_BASED_PARTITION as a separate case.
@@ -2407,6 +2401,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile,
mi_col);
nonrd_use_partition(cpi, tile, tp, mi_row, mi_col,
bsize, &dummy_rate, &dummy_dist);
+ encode_sb_rt(cpi, tile, tp, mi_row, mi_col, 1, BLOCK_64X64);
} else {
assert(0);
}