Lines Matching refs:rsc
160 RestSearchCtxt *rsc = (RestSearchCtxt *)priv; in rsc_on_tile() local
161 set_default_wiener(&rsc->ref_wiener); in rsc_on_tile()
162 set_default_sgrproj(&rsc->ref_sgrproj); in rsc_on_tile()
163 set_default_wiener(&rsc->switchable_ref_wiener); in rsc_on_tile()
164 set_default_sgrproj(&rsc->switchable_ref_sgrproj); in rsc_on_tile()
167 static inline void reset_rsc(RestSearchCtxt *rsc) { in reset_rsc() argument
168 memset(rsc->total_sse, 0, sizeof(rsc->total_sse)); in reset_rsc()
169 memset(rsc->total_bits, 0, sizeof(rsc->total_bits)); in reset_rsc()
176 RestSearchCtxt *rsc) { in init_rsc() argument
177 rsc->src = src; in init_rsc()
178 rsc->dst = dst; in init_rsc()
179 rsc->cm = cm; in init_rsc()
180 rsc->x = x; in init_rsc()
181 rsc->plane = plane; in init_rsc()
182 rsc->rusi = rusi; in init_rsc()
183 rsc->lpf_sf = lpf_sf; in init_rsc()
194 rsc->plane_w = plane_w; in init_rsc()
195 rsc->plane_h = plane_h; in init_rsc()
196 rsc->src_buffer = src->buffers[plane]; in init_rsc()
197 rsc->src_stride = src->strides[is_uv]; in init_rsc()
198 rsc->dgd_buffer = dgd->buffers[plane]; in init_rsc()
199 rsc->dgd_stride = dgd->strides[is_uv]; in init_rsc()
202 static int64_t try_restoration_unit(const RestSearchCtxt *rsc, in try_restoration_unit() argument
205 const AV1_COMMON *const cm = rsc->cm; in try_restoration_unit()
206 const int plane = rsc->plane; in try_restoration_unit()
219 limits, rui, &rsi->boundaries, &rlbs, rsc->plane_w, rsc->plane_h, in try_restoration_unit()
222 fts->buffers[plane], fts->strides[is_uv], rsc->dst->buffers[plane], in try_restoration_unit()
223 rsc->dst->strides[is_uv], cm->rst_tmpbuf, optimized_lr, cm->error); in try_restoration_unit()
225 return sse_restoration_unit(limits, rsc->src, rsc->dst, plane, highbd); in try_restoration_unit()
899 RestSearchCtxt *rsc = (RestSearchCtxt *)priv; in search_sgrproj() local
900 RestUnitSearchInfo *rusi = &rsc->rusi[rest_unit_idx]; in search_sgrproj()
902 const MACROBLOCK *const x = rsc->x; in search_sgrproj()
903 const AV1_COMMON *const cm = rsc->cm; in search_sgrproj()
909 if (rsc->skip_sgr_eval) { in search_sgrproj()
910 rsc->total_bits[RESTORE_SGRPROJ] += bits_none; in search_sgrproj()
911 rsc->total_sse[RESTORE_SGRPROJ] += rsc->sse[RESTORE_NONE]; in search_sgrproj()
913 rsc->sse[RESTORE_SGRPROJ] = INT64_MAX; in search_sgrproj()
918 rsc->dgd_buffer + limits->v_start * rsc->dgd_stride + limits->h_start; in search_sgrproj()
920 rsc->src_buffer + limits->v_start * rsc->src_stride + limits->h_start; in search_sgrproj()
922 const int is_uv = rsc->plane > 0; in search_sgrproj()
930 limits->v_end - limits->v_start, rsc->dgd_stride, src_start, in search_sgrproj()
931 rsc->src_stride, highbd, bit_depth, procunit_width, procunit_height, in search_sgrproj()
932 tmpbuf, rsc->lpf_sf->enable_sgr_ep_pruning, error_info); in search_sgrproj()
938 rsc->sse[RESTORE_SGRPROJ] = try_restoration_unit(rsc, limits, &rui); in search_sgrproj()
942 (count_sgrproj_bits(&rusi->sgrproj, &rsc->ref_sgrproj) in search_sgrproj()
945 x->rdmult, bits_none >> 4, rsc->sse[RESTORE_NONE], bit_depth); in search_sgrproj()
947 x->rdmult, bits_sgr >> 4, rsc->sse[RESTORE_SGRPROJ], bit_depth); in search_sgrproj()
950 (1 + DUAL_SGR_PENALTY_MULT * rsc->lpf_sf->dual_sgr_penalty_level); in search_sgrproj()
958 lr_ref_params[RESTORE_SGRPROJ][rsc->plane][rest_unit_idx].sgrproj_info = in search_sgrproj()
959 rsc->ref_sgrproj; in search_sgrproj()
962 rsc->total_sse[RESTORE_SGRPROJ] += rsc->sse[rtype]; in search_sgrproj()
963 rsc->total_bits[RESTORE_SGRPROJ] += in search_sgrproj()
965 if (cost_sgr < cost_none) rsc->ref_sgrproj = rusi->sgrproj; in search_sgrproj()
1493 static int64_t finer_search_wiener(const RestSearchCtxt *rsc, in finer_search_wiener() argument
1497 int64_t err = try_restoration_unit(rsc, limits, rui); in finer_search_wiener()
1499 if (rsc->lpf_sf->disable_wiener_coeff_refine_search) return err; in finer_search_wiener()
1520 err2 = try_restoration_unit(rsc, limits, rui); in finer_search_wiener()
1540 err2 = try_restoration_unit(rsc, limits, rui); in finer_search_wiener()
1561 err2 = try_restoration_unit(rsc, limits, rui); in finer_search_wiener()
1581 err2 = try_restoration_unit(rsc, limits, rui); in finer_search_wiener()
1607 RestSearchCtxt *rsc = (RestSearchCtxt *)priv; in search_wiener() local
1608 RestUnitSearchInfo *rusi = &rsc->rusi[rest_unit_idx]; in search_wiener()
1610 const MACROBLOCK *const x = rsc->x; in search_wiener()
1614 if (rsc->lpf_sf->prune_wiener_based_on_src_var) { in search_wiener()
1617 const int qs = av1_dc_quant_QTX(rsc->cm->quant_params.base_qindex, 0, in search_wiener()
1618 rsc->cm->seq_params->bit_depth) >> in search_wiener()
1622 (qs * qs * scale[rsc->lpf_sf->prune_wiener_based_on_src_var]) >> 4; in search_wiener()
1623 const int highbd = rsc->cm->seq_params->use_highbitdepth; in search_wiener()
1625 var_restoration_unit(limits, rsc->src, rsc->plane, highbd); in search_wiener()
1628 int prune_wiener = (src_var < thresh) || (rsc->sse[RESTORE_NONE] == 0); in search_wiener()
1630 rsc->total_bits[RESTORE_WIENER] += bits_none; in search_wiener()
1631 rsc->total_sse[RESTORE_WIENER] += rsc->sse[RESTORE_NONE]; in search_wiener()
1633 rsc->sse[RESTORE_WIENER] = INT64_MAX; in search_wiener()
1634 if (rsc->lpf_sf->prune_sgr_based_on_wiener == 2) rsc->skip_sgr_eval = 1; in search_wiener()
1640 (rsc->plane == AOM_PLANE_Y) ? WIENER_WIN : WIENER_WIN_CHROMA; in search_wiener()
1643 if (rsc->lpf_sf->reduce_wiener_window_size) { in search_wiener()
1645 (rsc->plane == AOM_PLANE_Y) ? WIENER_WIN_REDUCED : WIENER_WIN_CHROMA; in search_wiener()
1653 const AV1_COMMON *const cm = rsc->cm; in search_wiener()
1658 av1_compute_stats_highbd(reduced_wiener_win, rsc->dgd_buffer, in search_wiener()
1659 rsc->src_buffer, rsc->dgd_avg, rsc->src_avg, in search_wiener()
1661 limits->v_end, rsc->dgd_stride, rsc->src_stride, M, in search_wiener()
1664 av1_compute_stats(reduced_wiener_win, rsc->dgd_buffer, rsc->src_buffer, in search_wiener()
1665 rsc->dgd_avg, rsc->src_avg, limits->h_start, in search_wiener()
1667 rsc->dgd_stride, rsc->src_stride, M, H, in search_wiener()
1668 rsc->lpf_sf->use_downsampled_wiener_stats); in search_wiener()
1671 av1_compute_stats(reduced_wiener_win, rsc->dgd_buffer, rsc->src_buffer, in search_wiener()
1672 rsc->dgd_avg, rsc->src_avg, limits->h_start, limits->h_end, in search_wiener()
1673 limits->v_start, limits->v_end, rsc->dgd_stride, in search_wiener()
1674 rsc->src_stride, M, H, in search_wiener()
1675 rsc->lpf_sf->use_downsampled_wiener_stats); in search_wiener()
1691 rsc->total_bits[RESTORE_WIENER] += bits_none; in search_wiener()
1692 rsc->total_sse[RESTORE_WIENER] += rsc->sse[RESTORE_NONE]; in search_wiener()
1694 rsc->sse[RESTORE_WIENER] = INT64_MAX; in search_wiener()
1695 if (rsc->lpf_sf->prune_sgr_based_on_wiener == 2) rsc->skip_sgr_eval = 1; in search_wiener()
1699 rsc->sse[RESTORE_WIENER] = in search_wiener()
1700 finer_search_wiener(rsc, limits, &rui, reduced_wiener_win); in search_wiener()
1712 (count_wiener_bits(wiener_win, &rusi->wiener, &rsc->ref_wiener) in search_wiener()
1716 x->rdmult, bits_none >> 4, rsc->sse[RESTORE_NONE], in search_wiener()
1717 rsc->cm->seq_params->bit_depth); in search_wiener()
1719 x->rdmult, bits_wiener >> 4, rsc->sse[RESTORE_WIENER], in search_wiener()
1720 rsc->cm->seq_params->bit_depth); in search_wiener()
1728 if (rsc->lpf_sf->prune_sgr_based_on_wiener == 1) { in search_wiener()
1729 rsc->skip_sgr_eval = cost_wiener > (1.01 * cost_none); in search_wiener()
1730 } else if (rsc->lpf_sf->prune_sgr_based_on_wiener == 2) { in search_wiener()
1731 rsc->skip_sgr_eval = rusi->best_rtype[RESTORE_WIENER - 1] == RESTORE_NONE; in search_wiener()
1736 lr_ref_params[RESTORE_WIENER][rsc->plane][rest_unit_idx].wiener_info = in search_wiener()
1737 rsc->ref_wiener; in search_wiener()
1740 rsc->total_sse[RESTORE_WIENER] += rsc->sse[rtype]; in search_wiener()
1741 rsc->total_bits[RESTORE_WIENER] += in search_wiener()
1743 if (cost_wiener < cost_none) rsc->ref_wiener = rusi->wiener; in search_wiener()
1755 RestSearchCtxt *rsc = (RestSearchCtxt *)priv; in search_norestore() local
1757 const int highbd = rsc->cm->seq_params->use_highbitdepth; in search_norestore()
1758 rsc->sse[RESTORE_NONE] = sse_restoration_unit( in search_norestore()
1759 limits, rsc->src, &rsc->cm->cur_frame->buf, rsc->plane, highbd); in search_norestore()
1761 rsc->total_sse[RESTORE_NONE] += rsc->sse[RESTORE_NONE]; in search_norestore()
1772 RestSearchCtxt *rsc = (RestSearchCtxt *)priv; in search_switchable() local
1773 RestUnitSearchInfo *rusi = &rsc->rusi[rest_unit_idx]; in search_switchable()
1775 const MACROBLOCK *const x = rsc->x; in search_switchable()
1778 (rsc->plane == AOM_PLANE_Y) ? WIENER_WIN : WIENER_WIN_CHROMA; in search_switchable()
1797 if (rsc->sse[r] > rsc->sse[RESTORE_NONE]) continue; in search_switchable()
1800 const int64_t sse = rsc->sse[r]; in search_switchable()
1806 &rsc->switchable_ref_wiener); in search_switchable()
1810 count_sgrproj_bits(&rusi->sgrproj, &rsc->switchable_ref_sgrproj); in search_switchable()
1817 x->rdmult, bits >> 4, sse, rsc->cm->seq_params->bit_depth); in search_switchable()
1819 cost *= (1 + DUAL_SGR_PENALTY_MULT * rsc->lpf_sf->dual_sgr_penalty_level); in search_switchable()
1831 lr_ref_params[RESTORE_SWITCHABLE][rsc->plane][rest_unit_idx].wiener_info = in search_switchable()
1832 rsc->switchable_ref_wiener; in search_switchable()
1833 lr_ref_params[RESTORE_SWITCHABLE][rsc->plane][rest_unit_idx].sgrproj_info = in search_switchable()
1834 rsc->switchable_ref_sgrproj; in search_switchable()
1837 rsc->total_sse[RESTORE_SWITCHABLE] += rsc->sse[best_rtype]; in search_switchable()
1838 rsc->total_bits[RESTORE_SWITCHABLE] += best_bits; in search_switchable()
1839 if (best_rtype == RESTORE_WIENER) rsc->switchable_ref_wiener = rusi->wiener; in search_switchable()
1841 rsc->switchable_ref_sgrproj = rusi->sgrproj; in search_switchable()
1855 static void restoration_search(AV1_COMMON *cm, int plane, RestSearchCtxt *rsc, in restoration_search() argument
1877 reset_rsc(rsc); in restoration_search()
1893 rsc_on_tile(rsc); in restoration_search()
1932 rsc->skip_sgr_eval = 0; in restoration_search()
1936 funs[r](&limits, unit_idx, rsc, rsc->cm->rst_tmpbuf, NULL, in restoration_search()
2072 RestSearchCtxt rsc; in av1_pick_filter_restoration() local
2080 rsc.dgd_avg = NULL; in av1_pick_filter_restoration()
2081 rsc.src_avg = NULL; in av1_pick_filter_restoration()
2098 rsc.dgd_avg = cpi->pick_lr_ctxt.dgd_avg; in av1_pick_filter_restoration()
2103 memset(rsc.dgd_avg, 0, buf_size); in av1_pick_filter_restoration()
2104 rsc.src_avg = in av1_pick_filter_restoration()
2105 rsc.dgd_avg + 3 * RESTORATION_UNITSIZE_MAX * RESTORATION_UNITSIZE_MAX; in av1_pick_filter_restoration()
2107 assert(!((intptr_t)rsc.src_avg % 32)); in av1_pick_filter_restoration()
2158 cpi->pick_lr_ctxt.rusi[plane], &cpi->trial_frame_rst, &rsc); in av1_pick_filter_restoration()
2160 restoration_search(cm, plane, &rsc, disable_lr_filter); in av1_pick_filter_restoration()
2172 x->rdmult, rsc.total_bits[r] >> 4, rsc.total_sse[r], in av1_pick_filter_restoration()
2181 bits_this_size += rsc.total_bits[best_rtype[plane]]; in av1_pick_filter_restoration()
2182 sse_this_size += rsc.total_sse[best_rtype[plane]]; in av1_pick_filter_restoration()