Move loop restoration parameters to start of superblock. The loop restoration parameters were previously written at the end of each superblock, and have now been moved to the beginning. Change-Id: I45fc57a82d0ee340e6281f0a70d42ec0829caf9c
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 4f80dc8..889cd17 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -2090,6 +2090,25 @@ if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols) return; +#if CONFIG_LOOP_RESTORATION + for (int plane = 0; plane < av1_num_planes(cm); ++plane) { + int rcol0, rcol1, rrow0, rrow1, tile_tl_idx; + if (av1_loop_restoration_corners_in_sb(cm, plane, mi_row, mi_col, bsize, + &rcol0, &rcol1, &rrow0, &rrow1, + &tile_tl_idx)) { + const int rstride = cm->rst_info[plane].horz_units_per_tile; + for (int rrow = rrow0; rrow < rrow1; ++rrow) { + for (int rcol = rcol0; rcol < rcol1; ++rcol) { + const int rtile_idx = tile_tl_idx + rcol + rrow * rstride; + const RestorationUnitInfo *rui = + &cm->rst_info[plane].unit_info[rtile_idx]; + loop_restoration_write_sb_coeffs(cm, xd, rui, w, plane); + } + } + } + } +#endif + write_partition(cm, xd, hbs, mi_row, mi_col, partition, bsize, w); switch (partition) { case PARTITION_NONE: @@ -2161,25 +2180,6 @@ (bsize == BLOCK_8X8 || partition != PARTITION_SPLIT)) update_partition_context(xd, mi_row, mi_col, subsize, bsize); #endif // CONFIG_EXT_PARTITION_TYPES - -#if CONFIG_LOOP_RESTORATION - for (int plane = 0; plane < av1_num_planes(cm); ++plane) { - int rcol0, rcol1, rrow0, rrow1, tile_tl_idx; - if (av1_loop_restoration_corners_in_sb(cm, plane, mi_row, mi_col, bsize, - &rcol0, &rcol1, &rrow0, &rrow1, - &tile_tl_idx)) { - const int rstride = cm->rst_info[plane].horz_units_per_tile; - for (int rrow = rrow0; rrow < rrow1; ++rrow) { - for (int rcol = rcol0; rcol < rcol1; ++rcol) { - const int rtile_idx = tile_tl_idx + rcol + rrow * rstride; - const RestorationUnitInfo *rui = - &cm->rst_info[plane].unit_info[rtile_idx]; - loop_restoration_write_sb_coeffs(cm, xd, rui, w, plane); - } - } - } - } -#endif } static void write_modes(AV1_COMP *const cpi, const TileInfo *const tile,