Minor refactor to reduce unnecessary mem alloc
Use a variable instead of an array.
Make the horizontal function the same structure as the vertical function.
Change-Id: Iabfebe823ed9641cda0b5a0973c4dad4ecaef1a7
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index 64f26f8..2d665d6 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -1639,46 +1639,39 @@
const int row_step = mi_size_high[BLOCK_8X8] << ss_y;
struct buf_2d *const dst = &plane->dst;
uint8_t *const dst0 = dst->buf;
- FilterMasks row_masks_array[MAX_MIB_SIZE];
- unsigned int mask_4x4_int[MAX_MIB_SIZE] = { 0 };
uint8_t lfl[MAX_MIB_SIZE][MAX_MIB_SIZE] = { { 0 } };
+
int idx_r;
for (idx_r = 0; idx_r < cm->mib_size && mi_row + idx_r < cm->mi_rows;
idx_r += row_step) {
+ unsigned int mask_4x4_int;
+ FilterMasks row_masks;
const int r = idx_r >> mi_height_log2_lookup[BLOCK_8X8];
get_filter_level_and_masks_non420(cm, plane, pl, mib, mi_row, mi_col, idx_r,
- &lfl[r][0], mask_4x4_int + r, NULL,
- row_masks_array + r, NULL);
- }
- for (idx_r = 0; idx_r < cm->mib_size && mi_row + idx_r < cm->mi_rows;
- idx_r += row_step) {
- const int r = idx_r >> mi_width_log2_lookup[BLOCK_8X8];
- FilterMasks row_masks;
+ &lfl[r][0], &mask_4x4_int, NULL,
+ &row_masks, NULL);
#if CONFIG_LOOPFILTERING_ACROSS_TILES
// Disable filtering on the abovemost row or tile boundary
const MODE_INFO *mi = cm->mi + (mi_row + idx_r) * cm->mi_stride + mi_col;
if ((av1_disable_loopfilter_on_tile_boundary(cm) &&
(mi->mbmi.boundary_info & TILE_ABOVE_BOUNDARY)) ||
- (mi_row + idx_r == 0)) {
+ (mi_row + idx_r == 0))
memset(&row_masks, 0, sizeof(row_masks));
#else
- if (mi_row + idx_r == 0) {
- memset(&row_masks, 0, sizeof(row_masks));
+ if (mi_row + idx_r == 0) memset(&row_masks, 0, sizeof(row_masks));
#endif // CONFIG_LOOPFILTERING_ACROSS_TILES
- } else {
- memcpy(&row_masks, row_masks_array + r, sizeof(row_masks));
- }
+
#if CONFIG_HIGHBITDEPTH
if (cm->use_highbitdepth)
highbd_filter_selectively_horiz(
CONVERT_TO_SHORTPTR(dst->buf), dst->stride, row_masks.m16x16,
- row_masks.m8x8, row_masks.m4x4, mask_4x4_int[r], &cm->lf_info,
+ row_masks.m8x8, row_masks.m4x4, mask_4x4_int, &cm->lf_info,
&lfl[r][0], (int)cm->bit_depth);
else
#endif // CONFIG_HIGHBITDEPTH
filter_selectively_horiz(dst->buf, dst->stride, row_masks.m16x16,
- row_masks.m8x8, row_masks.m4x4, mask_4x4_int[r],
+ row_masks.m8x8, row_masks.m4x4, mask_4x4_int,
&cm->lf_info, &lfl[r][0]);
dst->buf += 8 * dst->stride;
}