CLPF: Don't assume sb size=64 and w&h multiple of 8 + valgrind fix.
Change-Id: I518ad9c58973910eb0bdcb377f2d90138208c570
diff --git a/av1/common/clpf.c b/av1/common/clpf.c
index 6739809..668c75f 100644
--- a/av1/common/clpf.c
+++ b/av1/common/clpf.c
@@ -14,9 +14,8 @@
int av1_clpf_maxbits(const AV1_COMMON *cm) {
return get_msb(
- ALIGN_POWER_OF_TWO(cm->mi_cols * MAX_MIB_SIZE, cm->clpf_size + 4) *
- ALIGN_POWER_OF_TWO(cm->mi_rows * MAX_MIB_SIZE,
- cm->clpf_size + 4) >>
+ ALIGN_POWER_OF_TWO(cm->mi_cols * MI_SIZE, cm->clpf_size + 4) *
+ ALIGN_POWER_OF_TWO(cm->mi_rows * MI_SIZE, cm->clpf_size + 4) >>
(cm->clpf_size * 2 + 8)) +
1;
}
@@ -59,11 +58,11 @@
unsigned int, unsigned int, uint8_t *)) {
/* Constrained low-pass filter (CLPF) */
int c, k, l, m, n;
- int width = rec->y_crop_width;
- int height = rec->y_crop_height;
+ const int bs = MI_SIZE;
+ int width = cm->mi_cols * bs;
+ int height = cm->mi_rows * bs;
int xpos, ypos;
int stride_y = rec->y_stride;
- const int bs = MAX_MIB_SIZE;
int num_fb_hor = (width + (1 << fb_size_log2) - bs) >> fb_size_log2;
int num_fb_ver = (height + (1 << fb_size_log2) - bs) >> fb_size_log2;
int block_index = 0;
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 12f2af2..79ddc3d 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1304,7 +1304,7 @@
// 50% probability, so a more efficient coding is possible.
aom_wb_write_literal(wb, cm->clpf_numblocks, av1_clpf_maxbits(cm));
for (i = 0; i < cm->clpf_numblocks; i++) {
- aom_wb_write_literal(wb, cm->clpf_blocks[i], 1);
+ aom_wb_write_literal(wb, cm->clpf_blocks ? cm->clpf_blocks[i] : 0, 1);
}
}
}
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index be095f9..a5de1e4 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3801,6 +3801,7 @@
#if CONFIG_CLPF
aom_free(cm->clpf_blocks);
+ cm->clpf_blocks = 0;
#endif
if (cm->seg.update_map) update_reference_segmentation_map(cpi);