CLPF: Don't assume sb size=64 and w&h multiple of 8 + valgrind fix.
Change-Id: I518ad9c58973910eb0bdcb377f2d90138208c570
This commit is contained in:
		
				
					committed by
					
						
						Yaowu Xu
					
				
			
			
				
	
			
			
			
						parent
						
							2fd70ee124
						
					
				
				
					commit
					f4d41e6330
				
			@@ -14,9 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int av1_clpf_maxbits(const AV1_COMMON *cm) {
 | 
					int av1_clpf_maxbits(const AV1_COMMON *cm) {
 | 
				
			||||||
  return get_msb(
 | 
					  return get_msb(
 | 
				
			||||||
             ALIGN_POWER_OF_TWO(cm->mi_cols * 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 * MAX_MIB_SIZE,
 | 
					                 ALIGN_POWER_OF_TWO(cm->mi_rows * MI_SIZE, cm->clpf_size + 4) >>
 | 
				
			||||||
                                    cm->clpf_size + 4) >>
 | 
					 | 
				
			||||||
             (cm->clpf_size * 2 + 8)) +
 | 
					             (cm->clpf_size * 2 + 8)) +
 | 
				
			||||||
         1;
 | 
					         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 *)) {
 | 
					                                   unsigned int, unsigned int, uint8_t *)) {
 | 
				
			||||||
  /* Constrained low-pass filter (CLPF) */
 | 
					  /* Constrained low-pass filter (CLPF) */
 | 
				
			||||||
  int c, k, l, m, n;
 | 
					  int c, k, l, m, n;
 | 
				
			||||||
  int width = rec->y_crop_width;
 | 
					  const int bs = MI_SIZE;
 | 
				
			||||||
  int height = rec->y_crop_height;
 | 
					  int width = cm->mi_cols * bs;
 | 
				
			||||||
 | 
					  int height = cm->mi_rows * bs;
 | 
				
			||||||
  int xpos, ypos;
 | 
					  int xpos, ypos;
 | 
				
			||||||
  int stride_y = rec->y_stride;
 | 
					  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_hor = (width + (1 << fb_size_log2) - bs) >> fb_size_log2;
 | 
				
			||||||
  int num_fb_ver = (height + (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;
 | 
					  int block_index = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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.
 | 
					      // 50% probability, so a more efficient coding is possible.
 | 
				
			||||||
      aom_wb_write_literal(wb, cm->clpf_numblocks, av1_clpf_maxbits(cm));
 | 
					      aom_wb_write_literal(wb, cm->clpf_numblocks, av1_clpf_maxbits(cm));
 | 
				
			||||||
      for (i = 0; i < cm->clpf_numblocks; i++) {
 | 
					      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);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4732,6 +4732,7 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if CONFIG_CLPF
 | 
					#if CONFIG_CLPF
 | 
				
			||||||
  aom_free(cm->clpf_blocks);
 | 
					  aom_free(cm->clpf_blocks);
 | 
				
			||||||
 | 
					  cm->clpf_blocks = 0;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (cm->seg.update_map) update_reference_segmentation_map(cpi);
 | 
					  if (cm->seg.update_map) update_reference_segmentation_map(cpi);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user