diff --git a/av1/common/blockd.c b/av1/common/blockd.c index c78831173b6d5dd9556ba8cf8c90896d3f6e0e3e..a412b959c96f7e56f98df7fc8cdda13c28d0fb08 100644 --- a/av1/common/blockd.c +++ b/av1/common/blockd.c @@ -160,6 +160,15 @@ void av1_reset_skip_context(MACROBLOCKD *xd, int mi_row, int mi_col, } } +#if CONFIG_LOOP_RESTORATION +void av1_reset_loop_restoration(MACROBLOCKD *xd) { + for (int p = 0; p < MAX_MB_PLANE; ++p) { + set_default_wiener(xd->wiener_info + p); + set_default_sgrproj(xd->sgrproj_info + p); + } +} +#endif // CONFIG_LOOP_RESTORATION + void av1_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y) { int i; diff --git a/av1/common/blockd.h b/av1/common/blockd.h index cb43f54549b378a22d4872344dda1cc851d65233..fc289dff76a68606dc373fac959623d93b67ace7 100644 --- a/av1/common/blockd.h +++ b/av1/common/blockd.h @@ -1233,6 +1233,10 @@ static INLINE TX_SIZE av1_get_tx_size(int plane, const MACROBLOCKD *xd) { void av1_reset_skip_context(MACROBLOCKD *xd, int mi_row, int mi_col, BLOCK_SIZE bsize); +#if CONFIG_LOOP_RESTORATION +void av1_reset_loop_restoration(MACROBLOCKD *xd); +#endif // CONFIG_LOOP_RESTORATION + typedef void (*foreach_transformed_block_visitor)(int plane, int block, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index 82c266cd19a762d1d0607eddb9aea311ebec6d77..2f4f5a1544442b70c759bfb9145eec286eff3edc 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c @@ -2303,10 +2303,7 @@ static const uint8_t *decode_tiles(AV1Decoder *pbi, const uint8_t *data, av1_zero_above_context(cm, tile_info.mi_col_start, tile_info.mi_col_end); #endif #if CONFIG_LOOP_RESTORATION - for (int p = 0; p < MAX_MB_PLANE; ++p) { - set_default_wiener(td->xd.wiener_info + p); - set_default_sgrproj(td->xd.sgrproj_info + p); - } + av1_reset_loop_restoration(&td->xd); #endif // CONFIG_LOOP_RESTORATION #if CONFIG_LOOPFILTERING_ACROSS_TILES diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 06fc10f50cffd79bb765e8ad86979c786e7624cc..22d282d7d09a3546b8b43e7b34df86b7c51d9429 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c @@ -3123,10 +3123,7 @@ static uint32_t write_tiles(AV1_COMP *const cpi, uint8_t *const dst, #endif mode_bc.allow_update_cdf = !cm->large_scale_tile; #if CONFIG_LOOP_RESTORATION - for (int p = 0; p < MAX_MB_PLANE; ++p) { - set_default_wiener(cpi->td.mb.e_mbd.wiener_info + p); - set_default_sgrproj(cpi->td.mb.e_mbd.sgrproj_info + p); - } + av1_reset_loop_restoration(&cpi->td.mb.e_mbd); #endif // CONFIG_LOOP_RESTORATION aom_start_encode(&mode_bc, buf->data + data_offset); @@ -3310,10 +3307,7 @@ static uint32_t write_tiles(AV1_COMP *const cpi, uint8_t *const dst, #endif // CONFIG_ANS mode_bc.allow_update_cdf = 1; #if CONFIG_LOOP_RESTORATION - for (int p = 0; p < MAX_MB_PLANE; ++p) { - set_default_wiener(cpi->td.mb.e_mbd.wiener_info + p); - set_default_sgrproj(cpi->td.mb.e_mbd.sgrproj_info + p); - } + av1_reset_loop_restoration(&cpi->td.mb.e_mbd); #endif // CONFIG_LOOP_RESTORATION aom_start_encode(&mode_bc, dst + total_size); @@ -4884,10 +4878,7 @@ static uint32_t write_tiles_in_tg_obus(AV1_COMP *const cpi, uint8_t *const dst, #endif // CONFIG_ANS mode_bc.allow_update_cdf = 1; #if CONFIG_LOOP_RESTORATION - for (int p = 0; p < MAX_MB_PLANE; ++p) { - set_default_wiener(cpi->td.mb.e_mbd.wiener_info + p); - set_default_sgrproj(cpi->td.mb.e_mbd.sgrproj_info + p); - } + av1_reset_loop_restoration(&cpi->td.mb.e_mbd); #endif // CONFIG_LOOP_RESTORATION aom_start_encode(&mode_bc, dst + total_size);