Support up to 1024 row/column tiles in bit-stream syntax

Add syntax support to allow up to 1024 row/column tiles
respectively.

Change-Id: I84278589364b658d6c4dd05f0771795f732ad68f
This commit is contained in:
Jingning Han 2015-05-19 15:41:57 -07:00
parent 46afda0908
commit 97adfb32bd
3 changed files with 25 additions and 5 deletions

View File

@ -1869,7 +1869,7 @@ static void setup_tile_info(VP9_COMMON *cm, struct vp9_read_bit_buffer *rb) {
max_ones = max_log2_tiles - min_log2_tiles;
cm->log2_tile_cols = min_log2_tiles;
while (max_ones-- && vp9_rb_read_bit(rb))
cm->log2_tile_cols++;
++cm->log2_tile_cols;
if (cm->log2_tile_cols > 10)
vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
@ -1877,6 +1877,12 @@ static void setup_tile_info(VP9_COMMON *cm, struct vp9_read_bit_buffer *rb) {
// rows
#if CONFIG_ROW_TILE
vp9_get_tile_n_bits(cm->mi_rows, &min_log2_tiles, &max_log2_tiles);
max_ones = max_log2_tiles - min_log2_tiles;
cm->log2_tile_rows = min_log2_tiles;
while (max_ones-- && vp9_rb_read_bit(rb))
++cm->log2_tile_rows;
if (cm->log2_tile_rows > 10)
vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
"Invalid number of tile columns");

View File

@ -1866,21 +1866,31 @@ static void fix_interp_filter(VP9_COMMON *cm) {
static void write_tile_info(const VP9_COMMON *const cm,
struct vp9_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);
int min_log2_tiles, max_log2_tiles, ones;
vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tiles, &max_log2_tiles);
// columns
ones = cm->log2_tile_cols - min_log2_tile_cols;
ones = cm->log2_tile_cols - min_log2_tiles;
while (ones--)
vp9_wb_write_bit(wb, 1);
if (cm->log2_tile_cols < max_log2_tile_cols)
if (cm->log2_tile_cols < max_log2_tiles)
vp9_wb_write_bit(wb, 0);
// rows
#if CONFIG_ROW_TILE
vp9_get_tile_n_bits(cm->mi_rows, &min_log2_tiles, &max_log2_tiles);
ones = cm->log2_tile_rows - min_log2_tiles;
while (ones--)
vp9_wb_write_bit(wb, 1);
if (cm->log2_tile_rows < max_log2_tiles)
vp9_wb_write_bit(wb, 0);
#else
vp9_wb_write_bit(wb, cm->log2_tile_rows != 0);
if (cm->log2_tile_rows != 0)
vp9_wb_write_bit(wb, cm->log2_tile_rows != 1);
#endif
}
static int get_refresh_mask(VP9_COMP *cpi) {

View File

@ -373,4 +373,8 @@ void vp9_pick_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
sd, cpi, method == LPF_PICK_FROM_SUBIMAGE);
#endif // CONFIG_LOOP_POSTFILTER
}
#if CONFIG_ROW_TILE
lf->filter_level = 0;
#endif
}