diff --git a/vp9/common/vp9_tile_common.c b/vp9/common/vp9_tile_common.c index 8c4a30353..7a20e0a9e 100644 --- a/vp9/common/vp9_tile_common.c +++ b/vp9/common/vp9_tile_common.c @@ -36,24 +36,24 @@ void vp9_tile_init(TileInfo *tile, const VP9_COMMON *cm, int row, int col) { vp9_tile_set_col(tile, cm, col); } +static int get_min_log2_tile_cols(const int sb64_cols) { + int min_log2 = 0; + while ((MAX_TILE_WIDTH_B64 << min_log2) < sb64_cols) + ++min_log2; + return min_log2; +} + +static int get_max_log2_tile_cols(const int sb64_cols) { + int max_log2 = 1; + while ((sb64_cols >> max_log2) >= MIN_TILE_WIDTH_B64) + ++max_log2; + return max_log2 - 1; +} + void vp9_get_tile_n_bits(int mi_cols, int *min_log2_tile_cols, int *max_log2_tile_cols) { - const int sb_cols = mi_cols_aligned_to_sb(mi_cols) >> MI_BLOCK_SIZE_LOG2; - int min_log2 = 0, max_log2 = 0; - - // max - while ((sb_cols >> max_log2) >= MIN_TILE_WIDTH_B64) - ++max_log2; - --max_log2; - if (max_log2 < 0) - max_log2 = 0; - - // min - while ((MAX_TILE_WIDTH_B64 << min_log2) < sb_cols) - ++min_log2; - - assert(min_log2 <= max_log2); - - *min_log2_tile_cols = min_log2; - *max_log2_tile_cols = max_log2; + const int sb64_cols = mi_cols_aligned_to_sb(mi_cols) >> MI_BLOCK_SIZE_LOG2; + *min_log2_tile_cols = get_min_log2_tile_cols(sb64_cols); + *max_log2_tile_cols = get_max_log2_tile_cols(sb64_cols); + assert(*min_log2_tile_cols <= *max_log2_tile_cols); }