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 if (ctx->mv_buf) { in iep2_deinit()
220 mpp_buffer_put(ctx->mv_buf); in iep2_deinit()
221 ctx->mv_buf = NULL; in iep2_deinit()
224 if (ctx->md_buf) { in iep2_deinit()
225 mpp_buffer_put(ctx->md_buf); in iep2_deinit()
226 ctx->md_buf = NULL; in iep2_deinit()
229 if (ctx->memGroup) { in iep2_deinit()
230 mpp_buffer_group_put(ctx->memGroup); in iep2_deinit()
231 ctx->memGroup = NULL; in iep2_deinit()
237 static MPP_RET iep2_done(struct iep2_api_ctx *ctx) in iep2_done() argument
240 ctx->output.dect_osd_cnt, in iep2_done()
241 ctx->output.out_osd_comb_cnt); in iep2_done()
243 if (ctx->params.dil_mode == IEP2_DIL_MODE_I5O2 || in iep2_done()
244 ctx->params.dil_mode == IEP2_DIL_MODE_I5O1T || in iep2_done()
245 ctx->params.dil_mode == IEP2_DIL_MODE_I5O1B) { in iep2_done()
249 iep2_set_osd(ctx, &ls); in iep2_done()
253 iep2_update_gmv(ctx, &ls); in iep2_done()
254 iep2_check_ffo(ctx); in iep2_done()
255 iep2_check_pd(ctx); in iep2_done()
256 get_param_from_env(ctx); in iep2_done()
258 if (ctx->params.roi_en && ctx->params.osd_area_num > 0) { in iep2_done()
261 ctx->params.roi_layer_num = 0; in iep2_done()
265 r.w = ctx->params.tile_cols; in iep2_done()
266 r.h = ctx->params.tile_rows; in iep2_done()
267 iep2_set_roi(ctx, &r, ROI_MODE_MA); in iep2_done()
269 r.x = ctx->params.osd_x_sta[0]; in iep2_done()
270 r.y = ctx->params.osd_y_sta[0]; in iep2_done()
271 r.w = ctx->params.osd_x_end[0] - ctx->params.osd_x_sta[0]; in iep2_done()
272 r.h = ctx->params.osd_y_end[0] - ctx->params.osd_y_sta[0]; in iep2_done()
273 iep2_set_roi(ctx, &r, ROI_MODE_MA_MC); in iep2_done()
278 if (ctx->params.dil_mode == IEP2_DIL_MODE_DECT || in iep2_done()
279 ctx->params.dil_mode == IEP2_DIL_MODE_PD) { in iep2_done()
280 iep2_check_ffo(ctx); in iep2_done()
281 iep2_check_pd(ctx); in iep2_done()
282 get_param_from_env(ctx); in iep2_done()
285 if (ctx->pd_inf.pdtype != PD_TYPES_UNKNOWN) { in iep2_done()
286 ctx->params.dil_mode = IEP2_DIL_MODE_PD; in iep2_done()
287 ctx->params.pd_mode = iep2_pd_get_output(&ctx->pd_inf); in iep2_done()
296 static void iep2_set_param(struct iep2_api_ctx *ctx, in iep2_set_param() argument
302 ctx->params.src_fmt = param->com.sfmt; in iep2_set_param()
303 ctx->params.src_yuv_swap = param->com.sswap; in iep2_set_param()
304 ctx->params.dst_fmt = param->com.dfmt; in iep2_set_param()
305 ctx->params.dst_yuv_swap = param->com.dswap; in iep2_set_param()
306 ctx->params.src_y_stride = param->com.hor_stride; in iep2_set_param()
307 ctx->params.src_y_stride /= 4; in iep2_set_param()
308 ctx->params.src_uv_stride = in iep2_set_param()
311 ctx->params.src_uv_stride /= 4; in iep2_set_param()
312 ctx->params.dst_y_stride = param->com.hor_stride; in iep2_set_param()
313 ctx->params.dst_y_stride /= 4; in iep2_set_param()
314 ctx->params.tile_cols = (param->com.width + 15) / 16; in iep2_set_param()
315 ctx->params.tile_rows = (param->com.height + 3) / 4; in iep2_set_param()
317 ctx->params.osd_pec_thr = (param->com.width * 26) >> 7; in iep2_set_param()
320 ctx->params.dil_mode = param->mode.dil_mode; in iep2_set_param()
321 ctx->params.dil_out_mode = param->mode.out_mode; in iep2_set_param()
322 ctx->params.dil_field_order = param->mode.dil_order; in iep2_set_param()
328 ctx->ff_inf.frm_offset = 6; in iep2_set_param()
329 ctx->ff_inf.fie_offset = 0; in iep2_set_param()
331 ctx->ff_inf.frm_offset = 0; in iep2_set_param()
332 ctx->ff_inf.fie_offset = 10; in iep2_set_param()
336 ctx->ff_inf.tff_offset = 3; in iep2_set_param()
337 ctx->ff_inf.bff_offset = 0; in iep2_set_param()
339 ctx->ff_inf.tff_offset = 0; in iep2_set_param()
340 ctx->ff_inf.bff_offset = 3; in iep2_set_param()
344 ctx->params.md_theta = param->md.md_theta; in iep2_set_param()
345 ctx->params.md_r = param->md.md_r; in iep2_set_param()
346 ctx->params.md_lambda = param->md.md_lambda; in iep2_set_param()
356 ctx->params.roi_en = param->roi.roi_en; in iep2_set_param()
363 static MPP_RET iep2_param_check(struct iep2_api_ctx *ctx) in iep2_param_check() argument
365 if (ctx->params.tile_cols <= 0 || ctx->params.tile_cols > IEP2_TILE_W_MAX || in iep2_param_check()
366 ctx->params.tile_rows <= 0 || ctx->params.tile_rows > IEP2_TILE_H_MAX) { in iep2_param_check()
368 ctx->params.tile_cols, ctx->params.tile_rows); in iep2_param_check()
375 static MPP_RET iep2_start(struct iep2_api_ctx *ctx) in iep2_start() argument
380 mpp_assert(ctx); in iep2_start()
384 mpp_req[0].size = sizeof(ctx->params); in iep2_start()
386 mpp_req[0].data_ptr = REQ_DATA_PTR(&ctx->params); in iep2_start()
390 mpp_req[1].size = sizeof(ctx->output); in iep2_start()
392 mpp_req[1].data_ptr = REQ_DATA_PTR(&ctx->output); in iep2_start()
396 ret = (RK_S32)ioctl(ctx->fd, MPP_IOC_CFG_V1, &mpp_req[0]); in iep2_start()
407 static MPP_RET iep2_wait(struct iep2_api_ctx *ctx) in iep2_wait() argument
416 ret = (RK_S32)ioctl(ctx->fd, MPP_IOC_CFG_V1, &mpp_req); in iep2_wait()
430 struct iep2_api_ctx *ctx = ictx; in iep2_control() local
436 iep2_set_param(ctx, &param->param, param->ptype); in iep2_control()
440 set_addr(&ctx->params.src[0], (IepImg *)iparam); in iep2_control()
443 set_addr(&ctx->params.src[1], (IepImg *)iparam); in iep2_control()
446 set_addr(&ctx->params.src[2], (IepImg *)iparam); in iep2_control()
449 set_addr(&ctx->params.dst[0], (IepImg *)iparam); in iep2_control()
452 set_addr(&ctx->params.dst[1], (IepImg *)iparam); in iep2_control()
457 if (0 > iep2_param_check(ctx)) in iep2_control()
459 if (0 > iep2_start(ctx)) in iep2_control()
461 iep2_wait(ctx); in iep2_control()
463 if (ctx->params.dil_mode == IEP2_DIL_MODE_PD) { in iep2_control()
464 ctx->params.dil_mode = IEP2_DIL_MODE_DECT; in iep2_control()
465 if (0 > iep2_start(ctx)) in iep2_control()
467 iep2_wait(ctx); in iep2_control()
472 inf->pd_flag = ctx->params.pd_mode; in iep2_control()
473 iep2_done(ctx); in iep2_control()
475 inf->dil_order = ctx->ff_inf.field_order; in iep2_control()
476 inf->frm_mode = ctx->ff_inf.frm_mode; in iep2_control()
477 inf->pd_types = ctx->pd_inf.pdtype; in iep2_control()
478 inf->dil_order_confidence_ratio = ctx->ff_inf.fo_ratio_avg; in iep2_control()
491 struct iep2_api_ctx *ctx = ictx; in iep2_reset() local
493 memset(&ctx->ff_inf, 0, sizeof(ctx->ff_inf)); in iep2_reset()