Lines Matching refs:ctx

56 static MPP_RET get_param_from_env(struct iep2_api_ctx *ctx)  in get_param_from_env()  argument
58 struct iep2_params *params = &ctx->params; in get_param_from_env()
59 mpp_env_get_u32("md_theta", &params->md_theta, ctx->params.md_theta); in get_param_from_env()
60 mpp_env_get_u32("md_r", &params->md_r, ctx->params.md_r); in get_param_from_env()
61 mpp_env_get_u32("md_lambda", &params->md_lambda, ctx->params.md_lambda); in get_param_from_env()
63 mpp_env_get_u32("mv_similar_thr", &params->mv_similar_thr, ctx->params.mv_similar_thr); in get_param_from_env()
64 …mpp_env_get_u32("mv_similar_num_thr0", &params->mv_similar_num_thr0, ctx->params.mv_similar_num_th… in get_param_from_env()
66 mpp_env_get_u32("eedi_thr0", &params->eedi_thr0, ctx->params.eedi_thr0); in get_param_from_env()
67 mpp_env_get_u32("comb_t_thr", &params->comb_t_thr, ctx->params.comb_t_thr); in get_param_from_env()
68 mpp_env_get_u32("comb_feature_thr", &params->comb_feature_thr, ctx->params.comb_feature_thr); in get_param_from_env()
75 struct iep2_api_ctx *ctx = *ictx; in iep2_init() local
81 ctx->fd = open("/dev/mpp_service", O_RDWR | O_CLOEXEC); in iep2_init()
82 if (ctx->fd < 0) { in iep2_init()
92 ret = (RK_S32)ioctl(ctx->fd, MPP_IOC_CFG_V1, &mpp_req); in iep2_init()
99 ctx->params.src_fmt = IEP2_FMT_YUV420; in iep2_init()
100 ctx->params.src_yuv_swap = IEP2_YUV_SWAP_SP_UV; in iep2_init()
101 ctx->params.dst_fmt = IEP2_FMT_YUV420; in iep2_init()
102 ctx->params.dst_yuv_swap = IEP2_YUV_SWAP_SP_UV; in iep2_init()
104 ctx->params.src_y_stride = 720 / 4; in iep2_init()
105 ctx->params.src_uv_stride = 720 / 4; in iep2_init()
106 ctx->params.dst_y_stride = 720 / 4; in iep2_init()
108 ctx->params.tile_cols = 720 / 16; in iep2_init()
109 ctx->params.tile_rows = 480 / 4; in iep2_init()
111 ctx->params.dil_mode = IEP2_DIL_MODE_I1O1T; in iep2_init()
113 ctx->params.dil_out_mode = IEP2_OUT_MODE_LINE; in iep2_init()
114 ctx->params.dil_field_order = IEP2_FIELD_ORDER_TFF; in iep2_init()
116 ctx->params.md_theta = 1; in iep2_init()
117 ctx->params.md_r = 6; in iep2_init()
122 ctx->params.md_lambda = 4; in iep2_init()
124 ctx->params.md_lambda = 8; in iep2_init()
127 ctx->params.md_lambda = 4; in iep2_init()
130 ctx->params.dect_resi_thr = 30; in iep2_init()
131 ctx->params.osd_area_num = 0; in iep2_init()
132 ctx->params.osd_gradh_thr = 60; in iep2_init()
133 ctx->params.osd_gradv_thr = 60; in iep2_init()
135 ctx->params.osd_pos_limit_en = 0; in iep2_init()
136 ctx->params.osd_pos_limit_num = 0; in iep2_init()
138 ctx->params.osd_pec_thr = 20; in iep2_init()
139 ctx->params.osd_line_num = 2; in iep2_init()
141 ctx->params.me_pena = 5; in iep2_init()
142 ctx->params.mv_similar_thr = 4; in iep2_init()
143 ctx->params.mv_similar_num_thr0 = 4; in iep2_init()
144 ctx->params.mv_bonus = 10; in iep2_init()
145 ctx->params.me_thr_offset = 20; in iep2_init()
147 ctx->params.mv_left_limit = 28; in iep2_init()
148 ctx->params.mv_right_limit = 27; in iep2_init()
150 ctx->params.eedi_thr0 = 12; in iep2_init()
152 memset(ctx->params.comb_osd_vld, 1, sizeof(ctx->params.comb_osd_vld)); in iep2_init()
153 ctx->params.comb_t_thr = 4; in iep2_init()
154 ctx->params.comb_feature_thr = 16; in iep2_init()
155 ctx->params.comb_cnt_thr = 0; in iep2_init()
157 ctx->params.ble_backtoma_num = 1; in iep2_init()
159 ctx->params.mtn_en = 1; in iep2_init()
160 memcpy(ctx->params.mtn_tab, iep2_mtn_tab, sizeof(ctx->params.mtn_tab)); in iep2_init()
162 ctx->params.roi_en = 0; in iep2_init()
163 ctx->params.roi_layer_num = 0; in iep2_init()
165 ctx->params.dil_mode = IEP2_DIL_MODE_I1O1T; in iep2_init()
166 ctx->params.src_fmt = IEP2_FMT_YUV420; in iep2_init()
167 ctx->params.src_yuv_swap = IEP2_YUV_SWAP_SP_UV; in iep2_init()
168 ctx->params.dst_fmt = IEP2_FMT_YUV420; in iep2_init()
169 ctx->params.dst_yuv_swap = IEP2_YUV_SWAP_SP_UV; in iep2_init()
170 ctx->params.src_y_stride = 720 / 4; in iep2_init()
171 ctx->params.src_uv_stride = 720 / 4; in iep2_init()
172 ctx->params.dst_y_stride = 720 / 4; in iep2_init()
173 ctx->params.tile_cols = 720 / 16; in iep2_init()
174 ctx->params.tile_rows = 480 / 4; in iep2_init()
176 memset(&ctx->ff_inf, 0, sizeof(ctx->ff_inf)); in iep2_init()
178 memset(&ctx->pd_inf, 0, sizeof(ctx->pd_inf)); in iep2_init()
179 ctx->pd_inf.pdtype = PD_TYPES_UNKNOWN; in iep2_init()
180 ctx->pd_inf.step = -1; in iep2_init()
182 ret = mpp_buffer_group_get_internal(&ctx->memGroup, MPP_BUFFER_TYPE_DRM); in iep2_init()
184 close(ctx->fd); in iep2_init()
189 ret = mpp_buffer_get(ctx->memGroup, &ctx->mv_buf, in iep2_init()
192 close(ctx->fd); in iep2_init()
193 mpp_buffer_group_put(ctx->memGroup); in iep2_init()
198 ret = mpp_buffer_get(ctx->memGroup, &ctx->md_buf, 1920 * 1088); in iep2_init()
200 close(ctx->fd); in iep2_init()
201 mpp_buffer_group_put(ctx->memGroup); in iep2_init()
202 mpp_buffer_put(ctx->mv_buf); in iep2_init()
207 ctx->params.mv_addr = mpp_buffer_get_fd(ctx->mv_buf); in iep2_init()
208 ctx->params.md_addr = mpp_buffer_get_fd(ctx->md_buf); in iep2_init()
215 struct iep2_api_ctx *ctx = ictx; in iep2_deinit() local
217 close(ctx->fd); in iep2_deinit()
219 mpp_buffer_put(ctx->mv_buf); in iep2_deinit()
220 mpp_buffer_put(ctx->md_buf); in iep2_deinit()
222 if (ctx->memGroup) { in iep2_deinit()
223 mpp_buffer_group_put(ctx->memGroup); in iep2_deinit()
224 ctx->memGroup = NULL; in iep2_deinit()
230 static MPP_RET iep2_done(struct iep2_api_ctx *ctx) in iep2_done() argument
233 ctx->output.dect_osd_cnt, in iep2_done()
234 ctx->output.out_osd_comb_cnt); in iep2_done()
236 if (ctx->params.dil_mode == IEP2_DIL_MODE_I5O2 || in iep2_done()
237 ctx->params.dil_mode == IEP2_DIL_MODE_I5O1T || in iep2_done()
238 ctx->params.dil_mode == IEP2_DIL_MODE_I5O1B) { in iep2_done()
242 iep2_set_osd(ctx, &ls); in iep2_done()
246 iep2_update_gmv(ctx, &ls); in iep2_done()
247 iep2_check_ffo(ctx); in iep2_done()
248 iep2_check_pd(ctx); in iep2_done()
249 get_param_from_env(ctx); in iep2_done()
251 if (ctx->params.roi_en && ctx->params.osd_area_num > 0) { in iep2_done()
254 ctx->params.roi_layer_num = 0; in iep2_done()
258 r.w = ctx->params.tile_cols; in iep2_done()
259 r.h = ctx->params.tile_rows; in iep2_done()
260 iep2_set_roi(ctx, &r, ROI_MODE_MA); in iep2_done()
262 r.x = ctx->params.osd_x_sta[0]; in iep2_done()
263 r.y = ctx->params.osd_y_sta[0]; in iep2_done()
264 r.w = ctx->params.osd_x_end[0] - ctx->params.osd_x_sta[0]; in iep2_done()
265 r.h = ctx->params.osd_y_end[0] - ctx->params.osd_y_sta[0]; in iep2_done()
266 iep2_set_roi(ctx, &r, ROI_MODE_MA_MC); in iep2_done()
271 if (ctx->params.dil_mode == IEP2_DIL_MODE_DECT || in iep2_done()
272 ctx->params.dil_mode == IEP2_DIL_MODE_PD) { in iep2_done()
273 iep2_check_ffo(ctx); in iep2_done()
274 iep2_check_pd(ctx); in iep2_done()
275 get_param_from_env(ctx); in iep2_done()
278 if (ctx->pd_inf.pdtype != PD_TYPES_UNKNOWN) { in iep2_done()
279 ctx->params.dil_mode = IEP2_DIL_MODE_PD; in iep2_done()
280 ctx->params.pd_mode = iep2_pd_get_output(&ctx->pd_inf); in iep2_done()
289 static void iep2_set_param(struct iep2_api_ctx *ctx, in iep2_set_param() argument
295 ctx->params.src_fmt = param->com.sfmt; in iep2_set_param()
296 ctx->params.src_yuv_swap = param->com.sswap; in iep2_set_param()
297 ctx->params.dst_fmt = param->com.dfmt; in iep2_set_param()
298 ctx->params.dst_yuv_swap = param->com.dswap; in iep2_set_param()
299 ctx->params.src_y_stride = param->com.hor_stride; in iep2_set_param()
300 ctx->params.src_y_stride /= 4; in iep2_set_param()
301 ctx->params.src_uv_stride = in iep2_set_param()
304 ctx->params.src_uv_stride /= 4; in iep2_set_param()
305 ctx->params.dst_y_stride = param->com.hor_stride; in iep2_set_param()
306 ctx->params.dst_y_stride /= 4; in iep2_set_param()
307 ctx->params.tile_cols = (param->com.width + 15) / 16; in iep2_set_param()
308 ctx->params.tile_rows = (param->com.height + 3) / 4; in iep2_set_param()
310 ctx->params.osd_pec_thr = (param->com.width * 26) >> 7; in iep2_set_param()
313 ctx->params.dil_mode = param->mode.dil_mode; in iep2_set_param()
314 ctx->params.dil_out_mode = param->mode.out_mode; in iep2_set_param()
315 if (!ctx->ff_inf.fo_detected) { in iep2_set_param()
316 ctx->params.dil_field_order = param->mode.dil_order; in iep2_set_param()
320 … param->mode.dil_mode, param->mode.out_mode, ctx->ff_inf.fo_detected, param->mode.dil_order); in iep2_set_param()
323 ctx->ff_inf.frm_offset = 6; in iep2_set_param()
324 ctx->ff_inf.fie_offset = 0; in iep2_set_param()
326 ctx->ff_inf.frm_offset = 0; in iep2_set_param()
327 ctx->ff_inf.fie_offset = 10; in iep2_set_param()
331 ctx->ff_inf.tff_offset = 3; in iep2_set_param()
332 ctx->ff_inf.bff_offset = 0; in iep2_set_param()
334 ctx->ff_inf.tff_offset = 0; in iep2_set_param()
335 ctx->ff_inf.bff_offset = 3; in iep2_set_param()
339 ctx->params.md_theta = param->md.md_theta; in iep2_set_param()
340 ctx->params.md_r = param->md.md_r; in iep2_set_param()
341 ctx->params.md_lambda = param->md.md_lambda; in iep2_set_param()
351 ctx->params.roi_en = param->roi.roi_en; in iep2_set_param()
358 static MPP_RET iep2_param_check(struct iep2_api_ctx *ctx) in iep2_param_check() argument
360 if (ctx->params.tile_cols <= 0 || ctx->params.tile_cols > IEP2_TILE_W_MAX || in iep2_param_check()
361 ctx->params.tile_rows <= 0 || ctx->params.tile_rows > IEP2_TILE_H_MAX) { in iep2_param_check()
363 ctx->params.tile_cols, ctx->params.tile_rows); in iep2_param_check()
370 static MPP_RET iep2_start(struct iep2_api_ctx *ctx) in iep2_start() argument
375 mpp_assert(ctx); in iep2_start()
379 mpp_req[0].size = sizeof(ctx->params); in iep2_start()
381 mpp_req[0].data_ptr = REQ_DATA_PTR(&ctx->params); in iep2_start()
385 mpp_req[1].size = sizeof(ctx->output); in iep2_start()
387 mpp_req[1].data_ptr = REQ_DATA_PTR(&ctx->output); in iep2_start()
391 ret = (RK_S32)ioctl(ctx->fd, MPP_IOC_CFG_V1, &mpp_req[0]); in iep2_start()
402 static MPP_RET iep2_wait(struct iep2_api_ctx *ctx) in iep2_wait() argument
411 ret = (RK_S32)ioctl(ctx->fd, MPP_IOC_CFG_V1, &mpp_req); in iep2_wait()
425 struct iep2_api_ctx *ctx = ictx; in iep2_control() local
431 iep2_set_param(ctx, &param->param, param->ptype); in iep2_control()
435 set_addr(&ctx->params.src[0], (IepImg *)iparam); in iep2_control()
438 set_addr(&ctx->params.src[1], (IepImg *)iparam); in iep2_control()
441 set_addr(&ctx->params.src[2], (IepImg *)iparam); in iep2_control()
444 set_addr(&ctx->params.dst[0], (IepImg *)iparam); in iep2_control()
447 set_addr(&ctx->params.dst[1], (IepImg *)iparam); in iep2_control()
452 if (0 > iep2_param_check(ctx)) in iep2_control()
454 if (0 > iep2_start(ctx)) in iep2_control()
456 iep2_wait(ctx); in iep2_control()
458 if (ctx->params.dil_mode == IEP2_DIL_MODE_PD) { in iep2_control()
459 ctx->params.dil_mode = IEP2_DIL_MODE_DECT; in iep2_control()
460 if (0 > iep2_start(ctx)) in iep2_control()
462 iep2_wait(ctx); in iep2_control()
467 inf->pd_flag = ctx->params.pd_mode; in iep2_control()
468 iep2_done(ctx); in iep2_control()
470 inf->dil_order = ctx->params.dil_field_order; in iep2_control()
471 inf->frm_mode = ctx->ff_inf.is_frm; in iep2_control()
472 inf->pd_types = ctx->pd_inf.pdtype; in iep2_control()
473 inf->dil_order_confidence_ratio = ctx->ff_inf.fo_ratio_avg; in iep2_control()