diff --git a/src/context.rs b/src/context.rs index 9633840eab26e9abc618d2cd8be9d51bfbf02d66..c622da5126cab4b40145117ddd94dc0573a12435 100644 --- a/src/context.rs +++ b/src/context.rs @@ -1310,8 +1310,8 @@ impl BlockContext { } pub fn set_block_size(&mut self, bo: &BlockOffset, bsize: BlockSize) { - let n4_w = BlockSize::MI_SIZE_WIDE[bsize as usize]; - let n4_h = BlockSize::MI_SIZE_HIGH[bsize as usize]; + let n4_w = bsize.width_mi(); + let n4_h = bsize.height_mi(); self.for_each(bo, bsize, |block| { block.n4_w = n4_w; block.n4_h = n4_h } ); } @@ -1868,7 +1868,7 @@ impl ContextWriter { } fn has_tr(&mut self, bo: &BlockOffset, bsize: BlockSize, is_sec_rect: bool) -> bool { - let sb_mi_size = BlockSize::MI_SIZE_WIDE[BLOCK_64X64 as usize]; /* Assume 64x64 for now */ + let sb_mi_size = BLOCK_64X64.width_mi(); /* Assume 64x64 for now */ let mask_row = bo.y & LOCAL_BLOCK_MASK; let mask_col = bo.x & LOCAL_BLOCK_MASK; let target_n4_w = bsize.width_mi(); @@ -1876,7 +1876,7 @@ impl ContextWriter { let mut bs = target_n4_w.max(target_n4_h); - if bs > BlockSize::MI_SIZE_WIDE[BLOCK_64X64 as usize] { + if bs > BLOCK_64X64.width_mi() { return false; } @@ -1974,9 +1974,9 @@ impl ContextWriter { let target_n4_w = bsize.width_mi(); let end_mi = cmp::min(cmp::min(target_n4_w, bc.cols - bo.x), - BlockSize::MI_SIZE_WIDE[BLOCK_64X64 as usize]); - let n4_w_8 = BlockSize::MI_SIZE_WIDE[BLOCK_8X8 as usize]; - let n4_w_16 = BlockSize::MI_SIZE_WIDE[BLOCK_16X16 as usize]; + BLOCK_64X64.width_mi()); + let n4_w_8 = BLOCK_8X8.width_mi(); + let n4_w_16 = BLOCK_16X16.width_mi(); let mut col_offset = 0; if row_offset.abs() > 1 { @@ -2028,9 +2028,9 @@ impl ContextWriter { let target_n4_h = bsize.height_mi(); let end_mi = cmp::min(cmp::min(target_n4_h, bc.rows - bo.y), - BlockSize::MI_SIZE_HIGH[BLOCK_64X64 as usize]); - let n4_h_8 = BlockSize::MI_SIZE_HIGH[BLOCK_8X8 as usize]; - let n4_h_16 = BlockSize::MI_SIZE_HIGH[BLOCK_16X16 as usize]; + BLOCK_64X64.height_mi()); + let n4_h_8 = BLOCK_8X8.height_mi(); + let n4_h_16 = BLOCK_16X16.height_mi(); let mut row_offset = 0; if col_offset.abs() > 1 { @@ -2098,10 +2098,10 @@ impl ContextWriter { let target_n4_w = bsize.width_mi(); let mut max_row_offs = 0 as isize; - let row_adj = (target_n4_h < BlockSize::MI_SIZE_HIGH[BLOCK_8X8 as usize]) && (bo.y & 0x01) != 0x0; + let row_adj = (target_n4_h < BLOCK_8X8.height_mi()) && (bo.y & 0x01) != 0x0; let mut max_col_offs = 0 as isize; - let col_adj = (target_n4_w < BlockSize::MI_SIZE_WIDE[BLOCK_8X8 as usize]) && (bo.x & 0x01) != 0x0; + let col_adj = (target_n4_w < BLOCK_8X8.width_mi()) && (bo.x & 0x01) != 0x0; let mut processed_rows = 0 as isize; let mut processed_cols = 0 as isize; @@ -2113,7 +2113,7 @@ impl ContextWriter { max_row_offs = -2 * MVREF_ROW_COLS as isize + row_adj as isize; // limit max offset for small blocks - if target_n4_h < BlockSize::MI_SIZE_HIGH[BLOCK_8X8 as usize] { + if target_n4_h < BLOCK_8X8.height_mi() { max_row_offs = -2 * 2 + row_adj as isize; } @@ -2125,7 +2125,7 @@ impl ContextWriter { max_col_offs = -2 * MVREF_ROW_COLS as isize + col_adj as isize; // limit max offset for small blocks - if target_n4_w < BlockSize::MI_SIZE_WIDE[BLOCK_8X8 as usize] { + if target_n4_w < BLOCK_8X8.width_mi() { max_col_offs = -2 * 2 + col_adj as isize; } diff --git a/src/partition.rs b/src/partition.rs index ca7842c0db911640a41d4d36ab983c1d181ff0ff..dd0b6f73eba9b3789e425db7e94bd1c1e8c25284 100644 --- a/src/partition.rs +++ b/src/partition.rs @@ -104,21 +104,13 @@ impl BlockSize { const BLOCK_SIZE_HEIGHT_LOG2: [usize; BlockSize::BLOCK_SIZES_ALL] = [2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7, 6, 7, 4, 2, 5, 3, 6, 4]; - pub const MI_SIZE_WIDE: [usize; BlockSize::BLOCK_SIZES_ALL] = [ - 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 1, 4, 2, 8, 4, 16 - ]; - - pub const MI_SIZE_HIGH: [usize; BlockSize::BLOCK_SIZES_ALL] = [ - 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 4, 1, 8, 2, 16, 4 - ]; - pub fn cfl_allowed(self) -> bool { // TODO: fix me when enabling EXT_PARTITION_TYPES self <= BlockSize::BLOCK_32X32 } pub fn width(self) -> usize { - 1 << BlockSize::BLOCK_SIZE_WIDTH_LOG2[self as usize] + 1 << self.width_log2() } pub fn width_log2(self) -> usize { @@ -130,7 +122,7 @@ impl BlockSize { } pub fn height(self) -> usize { - 1 << BlockSize::BLOCK_SIZE_HEIGHT_LOG2[self as usize] + 1 << self.height_log2() } pub fn height_log2(self) -> usize {