static int get_max_tile_cols(VP9_COMP *cpi) { const int aligned_width = ALIGN_POWER_OF_TWO(cpi->oxcf.width, MI_SIZE_LOG2); int mi_cols = aligned_width >> MI_SIZE_LOG2; int min_log2_tile_cols, max_log2_tile_cols; int log2_tile_cols; vp9_get_tile_n_bits(mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); log2_tile_cols = clamp(cpi->oxcf.tile_columns, min_log2_tile_cols, max_log2_tile_cols); return (1 << log2_tile_cols); }
static void write_tile_info(const VP9_COMMON *const cm, struct vpx_write_bit_buffer *wb) { int min_log2_tile_cols, max_log2_tile_cols, ones; vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); // columns ones = cm->log2_tile_cols - min_log2_tile_cols; while (ones--) vpx_wb_write_bit(wb, 1); if (cm->log2_tile_cols < max_log2_tile_cols) vpx_wb_write_bit(wb, 0); // rows vpx_wb_write_bit(wb, cm->log2_tile_rows != 0); if (cm->log2_tile_rows != 0) vpx_wb_write_bit(wb, cm->log2_tile_rows != 1); }
static int get_max_tile_cols(VP9_COMP *cpi) { const int aligned_width = ALIGN_POWER_OF_TWO(cpi->oxcf.width, MI_SIZE_LOG2); int mi_cols = aligned_width >> MI_SIZE_LOG2; int min_log2_tile_cols, max_log2_tile_cols; int log2_tile_cols; vp9_get_tile_n_bits(mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); log2_tile_cols = clamp(cpi->oxcf.tile_columns, min_log2_tile_cols, max_log2_tile_cols); if (cpi->oxcf.target_level == LEVEL_AUTO) { const int level_tile_cols = log_tile_cols_from_picsize_level(cpi->common.width, cpi->common.height); if (log2_tile_cols > level_tile_cols) { log2_tile_cols = VPXMAX(level_tile_cols, min_log2_tile_cols); } } return (1 << log2_tile_cols); }