From: Steinar Midtskogen Date: Thu, 25 Aug 2016 10:22:24 +0000 (+0200) Subject: CLPF: Don't assume sb size=64 and w&h multiple of 8 + valgrind fix. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f4d41e6330a1fbf00686d6879beba6a81074fc4d;p=libvpx 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 6739809c0..668c75fce 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 @@ int av1_clpf_frame(const YV12_BUFFER_CONFIG *dst, const YV12_BUFFER_CONFIG *rec, 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 bd3388110..77aee229f 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c @@ -2602,7 +2602,7 @@ static void encode_clpf(const AV1_COMMON *cm, struct aom_write_bit_buffer *wb) { // 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 20cabb679..3fbf6cf29 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c @@ -4732,6 +4732,7 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, #if CONFIG_CLPF aom_free(cm->clpf_blocks); + cm->clpf_blocks = 0; #endif if (cm->seg.update_map) update_reference_segmentation_map(cpi);