Reset cyclic refresh on resize.
Instead of disabling all segments.
Change-Id: I9b24b5b6ff0b312c4125704853271d47417af762
diff --git a/av1/encoder/segmentation.c b/av1/encoder/segmentation.c
index 193c7a7..71af388 100644
--- a/av1/encoder/segmentation.c
+++ b/av1/encoder/segmentation.c
@@ -178,26 +178,30 @@
unsigned no_pred_segcounts[MAX_SEGMENTS] = { 0 };
unsigned t_unpred_seg_counts[MAX_SEGMENTS] = { 0 };
(void)xd;
-
+ int scale_up = cm->prev_frame && (cm->width > cm->prev_frame->width ||
+ cm->height > cm->prev_frame->height);
// First of all generate stats regarding how well the last segment map
// predicts this one
- for (tile_row = 0; tile_row < cm->tile_rows; tile_row++) {
- TileInfo tile_info;
- av1_tile_set_row(&tile_info, cm, tile_row);
- for (tile_col = 0; tile_col < cm->tile_cols; tile_col++) {
- MB_MODE_INFO **mi_ptr;
- av1_tile_set_col(&tile_info, cm, tile_col);
- mi_ptr = cm->mi_grid_visible + tile_info.mi_row_start * cm->mi_stride +
- tile_info.mi_col_start;
- for (mi_row = tile_info.mi_row_start; mi_row < tile_info.mi_row_end;
- mi_row += cm->seq_params.mib_size,
- mi_ptr += cm->seq_params.mib_size * cm->mi_stride) {
- MB_MODE_INFO **mi = mi_ptr;
- for (mi_col = tile_info.mi_col_start; mi_col < tile_info.mi_col_end;
- mi_col += cm->seq_params.mib_size, mi += cm->seq_params.mib_size) {
- count_segs_sb(cm, xd, &tile_info, mi, no_pred_segcounts,
- temporal_predictor_count, t_unpred_seg_counts, mi_row,
- mi_col, cm->seq_params.sb_size);
+ if (!scale_up) {
+ for (tile_row = 0; tile_row < cm->tile_rows; tile_row++) {
+ TileInfo tile_info;
+ av1_tile_set_row(&tile_info, cm, tile_row);
+ for (tile_col = 0; tile_col < cm->tile_cols; tile_col++) {
+ MB_MODE_INFO **mi_ptr;
+ av1_tile_set_col(&tile_info, cm, tile_col);
+ mi_ptr = cm->mi_grid_visible + tile_info.mi_row_start * cm->mi_stride +
+ tile_info.mi_col_start;
+ for (mi_row = tile_info.mi_row_start; mi_row < tile_info.mi_row_end;
+ mi_row += cm->seq_params.mib_size,
+ mi_ptr += cm->seq_params.mib_size * cm->mi_stride) {
+ MB_MODE_INFO **mi = mi_ptr;
+ for (mi_col = tile_info.mi_col_start; mi_col < tile_info.mi_col_end;
+ mi_col += cm->seq_params.mib_size,
+ mi += cm->seq_params.mib_size) {
+ count_segs_sb(cm, xd, &tile_info, mi, no_pred_segcounts,
+ temporal_predictor_count, t_unpred_seg_counts, mi_row,
+ mi_col, cm->seq_params.sb_size);
+ }
}
}
}