/linux-6.12.1/drivers/media/platform/ti/omap/ |
D | omap_voutlib.c | 44 struct v4l2_framebuffer *fbuf, struct v4l2_rect *crop) in omap_vout_default_crop() argument 46 crop->width = (pix->width < fbuf->fmt.width) ? in omap_vout_default_crop() 48 crop->height = (pix->height < fbuf->fmt.height) ? in omap_vout_default_crop() 50 crop->width &= ~1; in omap_vout_default_crop() 51 crop->height &= ~1; in omap_vout_default_crop() 52 crop->left = ((pix->width - crop->width) >> 1) & ~1; in omap_vout_default_crop() 53 crop->top = ((pix->height - crop->height) >> 1) & ~1; in omap_vout_default_crop() 115 int omap_vout_new_window(struct v4l2_rect *crop, in omap_vout_new_window() argument 133 if ((crop->height/win->w.height) >= 2) in omap_vout_new_window() 134 crop->height = win->w.height * 2; in omap_vout_new_window() [all …]
|
D | omap_vout_vrfb.c | 322 struct v4l2_rect *crop = &vout->crop; in omap_vout_calculate_vrfb_offset() local 354 ctop = (pix->height - crop->height) - crop->top; in omap_vout_calculate_vrfb_offset() 355 cleft = (pix->width - crop->width) - crop->left; in omap_vout_calculate_vrfb_offset() 367 temp_ps * cleft + crop->top * temp_ps; in omap_vout_calculate_vrfb_offset() 370 cleft + crop->top * temp_ps + (line_length * in omap_vout_calculate_vrfb_offset() 371 ((crop->width / (vr_ps)) - 1) * ps); in omap_vout_calculate_vrfb_offset() 386 (crop->height - 1) * ps); in omap_vout_calculate_vrfb_offset() 395 temp_ps * crop->left + ctop * ps; in omap_vout_calculate_vrfb_offset() 398 temp_ps * crop->left + ctop * ps + in omap_vout_calculate_vrfb_offset() 399 (line_length * ((crop->width / vr_ps) - 1) * in omap_vout_calculate_vrfb_offset() [all …]
|
D | omap_voutlib.h | 16 struct v4l2_framebuffer *fbuf, struct v4l2_rect *crop); 19 struct v4l2_rect *crop, struct v4l2_window *win, 26 int omap_vout_new_window(struct v4l2_rect *crop, 31 struct v4l2_framebuffer *fbuf, struct v4l2_rect *crop,
|
/linux-6.12.1/drivers/media/platform/st/stm32/stm32-dcmipp/ |
D | dcmipp-byteproc.c | 244 struct v4l2_rect *crop, *compose; in dcmipp_byteproc_set_fmt() local 251 crop = v4l2_subdev_state_get_crop(sd_state, 1); in dcmipp_byteproc_set_fmt() 256 fmt->format.width = crop->width; in dcmipp_byteproc_set_fmt() 257 fmt->format.height = crop->height; in dcmipp_byteproc_set_fmt() 260 crop->top = 0; in dcmipp_byteproc_set_fmt() 261 crop->left = 0; in dcmipp_byteproc_set_fmt() 262 crop->width = fmt->format.width; in dcmipp_byteproc_set_fmt() 263 crop->height = fmt->format.height; in dcmipp_byteproc_set_fmt() 264 *compose = *crop; in dcmipp_byteproc_set_fmt() 278 struct v4l2_rect *crop, *compose; in dcmipp_byteproc_get_selection() local [all …]
|
/linux-6.12.1/drivers/staging/media/atomisp/pci/ |
D | atomisp_subdev.c | 240 return &isp_sd->fmt[pad].crop; in atomisp_subdev_get_rect() 265 struct v4l2_rect *crop[ATOMISP_SUBDEV_PADS_NUM], in isp_get_fmt_rect() 272 crop[i] = atomisp_subdev_get_rect(sd, sd_state, which, i, in isp_get_fmt_rect() 318 struct v4l2_rect *crop[ATOMISP_SUBDEV_PADS_NUM], in atomisp_subdev_set_selection() local 325 isp_get_fmt_rect(sd, sd_state, which, ffmt, crop, comp); in atomisp_subdev_set_selection() 342 crop[pad]->width = ffmt[pad]->width; in atomisp_subdev_set_selection() 343 crop[pad]->height = ffmt[pad]->height; in atomisp_subdev_set_selection() 346 && crop[pad]->width && crop[pad]->height) { in atomisp_subdev_set_selection() 347 crop[pad]->width -= isp_sd->sink_pad_padding_w; in atomisp_subdev_set_selection() 348 crop[pad]->height -= isp_sd->sink_pad_padding_h; in atomisp_subdev_set_selection() [all …]
|
/linux-6.12.1/drivers/media/platform/st/sti/delta/ |
D | delta-debug.c | 25 s->crop.width, s->crop.height, in delta_streaminfo_str() 26 s->crop.left, s->crop.top, in delta_streaminfo_str() 46 f->crop.width, f->crop.height, in delta_frameinfo_str() 47 f->crop.left, f->crop.top, in delta_frameinfo_str()
|
/linux-6.12.1/drivers/staging/media/imx/ |
D | imx-media-csi.c | 81 struct v4l2_rect crop; member 709 struct v4l2_rect crop; in csi_setup() local 716 crop = priv->crop; in csi_setup() 724 crop.width *= incc->cycles; in csi_setup() 727 ipu_csi_set_window(priv->csi, &crop); in csi_setup() 730 priv->crop.width == 2 * priv->compose.width, in csi_setup() 731 priv->crop.height == 2 * priv->compose.height); in csi_setup() 1179 return &priv->crop; in __csi_get_crop() 1193 struct v4l2_rect *crop, in csi_try_crop() argument 1200 crop->width = min_t(__u32, infmt->width, crop->width); in csi_try_crop() [all …]
|
/linux-6.12.1/Documentation/userspace-api/media/drivers/ |
D | ccs.rst | 24 as analogue crop functionality present in many compliant devices. The analogue 25 crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the 36 Additionally, if a device has no scaler or digital crop functionality, the 37 source pad (1) exposes another digital crop selection rectangle that can only 38 crop at the end of the lines and frames. 43 The scaler sub-device represents the digital crop and scaling functionality of 45 configure the digital crop on the sink pad (0) when digital crop is supported. 50 another digital crop selection rectangle that can only crop at the end of the 53 Digital and analogue crop 56 Digital crop functionality is referred to as cropping that effectively works by [all …]
|
/linux-6.12.1/Documentation/userspace-api/media/v4l/ |
D | crop.rst | 15 equivalent in the SELECTION API. See :ref:`selection-vs-crop` for a 64 .. kernel-figure:: crop.svg 65 :alt: crop.svg 170 struct v4l2_crop crop; 180 memset (&crop, 0, sizeof (crop)); 181 crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 182 crop.c = cropcap.defrect; 186 if (-1 == ioctl (fd, VIDIOC_S_CROP, &crop) 229 struct v4l2_crop crop; 239 memset (&crop, 0, sizeof (crop)); [all …]
|
/linux-6.12.1/drivers/media/platform/ti/omap3isp/ |
D | ispresizer.c | 141 return &res->crop.request; in __resizer_get_crop() 507 clock = div_u64((u64)limit * res->crop.active.height, ofmt->height); in omap3isp_resizer_max_rate() 509 *max_rate = div_u64((u64)clock * res->crop.active.width, ofmt->width); in omap3isp_resizer_max_rate() 588 requests_per_frame = DIV_ROUND_UP(res->crop.active.width * 2, 256) in resizer_adjust_bandwidth() 589 * res->crop.active.height; in resizer_adjust_bandwidth() 926 res->crop_offset = (res->crop.active.top * input->width + in resizer_set_crop_params() 927 res->crop.active.left) * 2; in resizer_set_crop_params() 946 resizer_set_start(res, res->crop.active.left * 2, in resizer_set_crop_params() 947 res->crop.active.top); in resizer_set_crop_params() 954 resizer_set_input_size(res, res->crop.active.width, in resizer_set_crop_params() [all …]
|
/linux-6.12.1/drivers/media/platform/renesas/vsp1/ |
D | vsp1_rpf.c | 291 struct v4l2_rect crop = partition->rpf[rpf->entity.index]; in rpf_configure_partition() local 303 crop.height = round_down(crop.height / 2, fmtinfo->vsub); in rpf_configure_partition() 304 crop.top = round_down(crop.top / 2, fmtinfo->vsub); in rpf_configure_partition() 308 (crop.width << VI6_RPF_SRC_BSIZE_BHSIZE_SHIFT) | in rpf_configure_partition() 309 (crop.height << VI6_RPF_SRC_BSIZE_BVSIZE_SHIFT)); in rpf_configure_partition() 311 (crop.width << VI6_RPF_SRC_ESIZE_EHSIZE_SHIFT) | in rpf_configure_partition() 312 (crop.height << VI6_RPF_SRC_ESIZE_EVSIZE_SHIFT)); in rpf_configure_partition() 314 mem.addr[0] += crop.top * format->plane_fmt[0].bytesperline in rpf_configure_partition() 315 + crop.left * fmtinfo->bpp[0] / 8; in rpf_configure_partition() 321 offset = crop.top / fmtinfo->vsub * bpl in rpf_configure_partition() [all …]
|
D | vsp1_rwpf.c | 99 struct v4l2_rect *crop; in vsp1_rwpf_set_format() local 102 crop = v4l2_subdev_state_get_crop(state, RWPF_PAD_SINK); in vsp1_rwpf_set_format() 103 crop->left = 0; in vsp1_rwpf_set_format() 104 crop->top = 0; in vsp1_rwpf_set_format() 105 crop->width = fmt->format.width; in vsp1_rwpf_set_format() 106 crop->height = fmt->format.height; in vsp1_rwpf_set_format() 177 struct v4l2_rect *crop; in vsp1_rwpf_set_selection() local 219 crop = v4l2_subdev_state_get_crop(state, RWPF_PAD_SINK); in vsp1_rwpf_set_selection() 220 *crop = sel->r; in vsp1_rwpf_set_selection() 224 format->width = crop->width; in vsp1_rwpf_set_selection() [all …]
|
D | vsp1_hgt.c | 136 struct v4l2_rect *crop; in hgt_configure_stream() local 143 crop = v4l2_subdev_state_get_crop(state, HISTO_PAD_SINK); in hgt_configure_stream() 149 (crop->left << VI6_HGT_OFFSET_HOFFSET_SHIFT) | in hgt_configure_stream() 150 (crop->top << VI6_HGT_OFFSET_VOFFSET_SHIFT)); in hgt_configure_stream() 152 (crop->width << VI6_HGT_SIZE_HSIZE_SHIFT) | in hgt_configure_stream() 153 (crop->height << VI6_HGT_SIZE_VSIZE_SHIFT)); in hgt_configure_stream() 165 hratio = crop->width * 2 / compose->width / 3; in hgt_configure_stream() 166 vratio = crop->height * 2 / compose->height / 3; in hgt_configure_stream()
|
D | vsp1_hgo.c | 140 struct v4l2_rect *crop; in hgo_configure_stream() local 144 crop = v4l2_subdev_state_get_crop(state, HISTO_PAD_SINK); in hgo_configure_stream() 150 (crop->left << VI6_HGO_OFFSET_HOFFSET_SHIFT) | in hgo_configure_stream() 151 (crop->top << VI6_HGO_OFFSET_VOFFSET_SHIFT)); in hgo_configure_stream() 153 (crop->width << VI6_HGO_SIZE_HSIZE_SHIFT) | in hgo_configure_stream() 154 (crop->height << VI6_HGO_SIZE_VSIZE_SHIFT)); in hgo_configure_stream() 162 hratio = crop->width * 2 / compose->width / 3; in hgo_configure_stream() 163 vratio = crop->height * 2 / compose->height / 3; in hgo_configure_stream()
|
D | vsp1_histo.c | 204 struct v4l2_rect *crop; in histo_get_selection() local 221 crop = v4l2_subdev_state_get_crop(state, HISTO_PAD_SINK); in histo_get_selection() 224 sel->r.width = crop->width; in histo_get_selection() 225 sel->r.height = crop->height; in histo_get_selection() 282 struct v4l2_rect *crop; in histo_set_compose() local 293 crop = v4l2_subdev_state_get_crop(sd_state, sel->pad); in histo_set_compose() 309 sel->r.width = clamp(sel->r.width, crop->width / 4, crop->width); in histo_set_compose() 310 ratio = 1 << (crop->width * 2 / sel->r.width / 3); in histo_set_compose() 311 sel->r.width = crop->width / ratio; in histo_set_compose() 314 sel->r.height = clamp(sel->r.height, crop->height / 4, crop->height); in histo_set_compose() [all …]
|
/linux-6.12.1/drivers/media/i2c/ |
D | imx296.c | 510 const struct v4l2_rect *crop; in imx296_setup() local 515 crop = v4l2_subdev_state_get_crop(state, 0); in imx296_setup() 521 if (crop->width != IMX296_PIXEL_ARRAY_WIDTH || in imx296_setup() 522 crop->height != IMX296_PIXEL_ARRAY_HEIGHT) { in imx296_setup() 525 imx296_write(sensor, IMX296_FID0_ROIPH1, crop->left, &ret); in imx296_setup() 526 imx296_write(sensor, IMX296_FID0_ROIPV1, crop->top, &ret); in imx296_setup() 527 imx296_write(sensor, IMX296_FID0_ROIWH1, crop->width, &ret); in imx296_setup() 528 imx296_write(sensor, IMX296_FID0_ROIWV1, crop->height, &ret); in imx296_setup() 534 (crop->width != format->width ? in imx296_setup() 536 (crop->height != format->height ? in imx296_setup() [all …]
|
D | mt9m114.c | 1159 struct v4l2_rect *crop; in mt9m114_pa_init_state() local 1161 crop = v4l2_subdev_state_get_crop(state, 0); in mt9m114_pa_init_state() 1163 crop->left = 0; in mt9m114_pa_init_state() 1164 crop->top = 0; in mt9m114_pa_init_state() 1165 crop->width = MT9M114_PIXEL_ARRAY_WIDTH; in mt9m114_pa_init_state() 1166 crop->height = MT9M114_PIXEL_ARRAY_HEIGHT; in mt9m114_pa_init_state() 1219 struct v4l2_rect *crop; in mt9m114_pa_set_fmt() local 1223 crop = v4l2_subdev_state_get_crop(state, fmt->pad); in mt9m114_pa_set_fmt() 1227 hscale = DIV_ROUND_CLOSEST(crop->width, fmt->format.width ? : 1); in mt9m114_pa_set_fmt() 1228 vscale = DIV_ROUND_CLOSEST(crop->height, fmt->format.height ? : 1); in mt9m114_pa_set_fmt() [all …]
|
/linux-6.12.1/drivers/media/platform/mediatek/mdp/ |
D | mtk_mdp_regs.c | 74 config->crop_x = frame->crop.left; in mtk_mdp_hw_set_in_size() 75 config->crop_y = frame->crop.top; in mtk_mdp_hw_set_in_size() 78 config->crop_w = frame->crop.width; in mtk_mdp_hw_set_in_size() 79 config->crop_h = frame->crop.height; in mtk_mdp_hw_set_in_size() 109 config->crop_x = frame->crop.left; in mtk_mdp_hw_set_out_size() 110 config->crop_y = frame->crop.top; in mtk_mdp_hw_set_out_size() 111 config->crop_w = frame->crop.width; in mtk_mdp_hw_set_out_size() 112 config->crop_h = frame->crop.height; in mtk_mdp_hw_set_out_size()
|
/linux-6.12.1/drivers/staging/media/starfive/camss/ |
D | stf-isp.c | 63 struct v4l2_rect *crop; in isp_set_stream() local 67 crop = v4l2_subdev_state_get_crop(sd_state, STF_ISP_PAD_SRC); in isp_set_stream() 72 stf_isp_settings(isp_dev, crop, fmt->code); in isp_set_stream() 182 struct v4l2_rect *crop) in isp_try_crop() argument 194 v4l2_rect_set_min_size(crop, &stf_frame_min_crop); in isp_try_crop() 195 v4l2_rect_map_inside(crop, &bounds); in isp_try_crop() 247 struct v4l2_subdev_selection crop = { 0 }; in isp_set_selection() local 257 crop.which = sel->which; in isp_set_selection() 258 crop.pad = STF_ISP_PAD_SRC; in isp_set_selection() 259 crop.target = V4L2_SEL_TGT_CROP; in isp_set_selection() [all …]
|
/linux-6.12.1/drivers/media/platform/amlogic/meson-ge2d/ |
D | ge2d.c | 64 struct v4l2_rect crop; member 217 FIELD_PREP(GE2D_START, ctx->in.crop.top) | in ge2d_hw_start() 218 FIELD_PREP(GE2D_END, ctx->in.crop.top + ctx->in.crop.height - 1)); in ge2d_hw_start() 220 FIELD_PREP(GE2D_START, ctx->in.crop.left) | in ge2d_hw_start() 221 FIELD_PREP(GE2D_END, ctx->in.crop.left + ctx->in.crop.width - 1)); in ge2d_hw_start() 223 FIELD_PREP(GE2D_START, ctx->out.crop.top) | in ge2d_hw_start() 224 FIELD_PREP(GE2D_END, ctx->out.crop.top + ctx->out.crop.height - 1)); in ge2d_hw_start() 226 FIELD_PREP(GE2D_START, ctx->out.crop.left) | in ge2d_hw_start() 227 FIELD_PREP(GE2D_END, ctx->out.crop.left + ctx->out.crop.width - 1)); in ge2d_hw_start() 229 FIELD_PREP(GE2D_START, ctx->out.crop.top) | in ge2d_hw_start() [all …]
|
/linux-6.12.1/Documentation/driver-api/media/drivers/ |
D | sh_mobile_ceu_camera.rst | 76 2. Calculate "effective" input crop (sensor subwindow) - CEU crop scaled back at 101 8. Calculate new CEU crop - apply sensor scales to previously calculated 102 "effective" crop: 107 9. Use CEU cropping to crop to the new window: 119 The :ref:`V4L2 crop API <crop-scale>` says: 132 to 2 : 2', target crop 5 : 5', current output format 6' - 6. 142 6. Calculate and apply host crop: 6 - 7 = (5 - 2) * (6' - 6) / (5' - 5)
|
/linux-6.12.1/drivers/media/pci/bt8xx/ |
D | bttv-risc.c | 263 geo->crop = ((width>>8)&0x03) | ((geo->hdelay>>6)&0x0c) | in bttv_calc_geo_old() 287 const struct v4l2_rect * crop) in bttv_calc_geo() argument 293 if ((crop->left == tvnorm->cropcap.defrect.left in bttv_calc_geo() 294 && crop->top == tvnorm->cropcap.defrect.top in bttv_calc_geo() 295 && crop->width == tvnorm->cropcap.defrect.width in bttv_calc_geo() 296 && crop->height == tvnorm->cropcap.defrect.height in bttv_calc_geo() 306 c_width = min((unsigned int) crop->width, width * 16); in bttv_calc_geo() 307 c_height = min((unsigned int) crop->height, height * 16); in bttv_calc_geo() 312 geo->hdelay = ((crop->left * width + c_width) / c_width) & ~1; in bttv_calc_geo() 315 geo->vdelay = crop->top - tvnorm->cropcap.bounds.top + MIN_VDELAY; in bttv_calc_geo() [all …]
|
/linux-6.12.1/drivers/media/platform/mediatek/mdp3/ |
D | mtk-mdp3-regs.c | 283 int mdp_check_scaling_ratio(const struct v4l2_rect *crop, in mdp_check_scaling_ratio() argument 289 crop_w = crop->width; in mdp_check_scaling_ratio() 290 crop_h = crop->height; in mdp_check_scaling_ratio() 319 r1 = frame->crop.c.width * frame->crop.c.height; in mdp_check_pp_enable() 436 static void mdp_set_src_crop(struct img_crop *c, struct mdp_crop *crop) in mdp_set_src_crop() argument 438 c->left = crop->c.left in mdp_set_src_crop() 439 + mdp_to_fixed(&c->left_subpix, &crop->left_subpix); in mdp_set_src_crop() 440 c->top = crop->c.top in mdp_set_src_crop() 441 + mdp_to_fixed(&c->top_subpix, &crop->top_subpix); in mdp_set_src_crop() 442 c->width = crop->c.width in mdp_set_src_crop() [all …]
|
/linux-6.12.1/drivers/media/platform/samsung/exynos-gsc/ |
D | gsc-core.c | 233 frame->crop.width = width; in gsc_set_frame_size() 234 frame->crop.height = height; in gsc_set_frame_size() 235 frame->crop.left = 0; in gsc_set_frame_size() 236 frame->crop.top = 0; in gsc_set_frame_size() 291 remainder = s_frame->crop.width % (*wratio * walign); in gsc_check_src_scale_info() 293 s_frame->crop.width -= remainder; in gsc_check_src_scale_info() 294 gsc_cal_prescaler_ratio(var, s_frame->crop.width, tx, wratio); in gsc_check_src_scale_info() 296 s_frame->crop.width + remainder, s_frame->crop.width); in gsc_check_src_scale_info() 299 remainder = s_frame->crop.height % (*hratio * halign); in gsc_check_src_scale_info() 301 s_frame->crop.height -= remainder; in gsc_check_src_scale_info() [all …]
|
/linux-6.12.1/drivers/media/pci/intel/ipu6/ |
D | ipu6-isys-subdev.c | 146 struct v4l2_rect *crop; in ipu6_isys_subdev_set_fmt() local 198 crop = v4l2_subdev_state_get_crop(state, other_pad, other_stream); in ipu6_isys_subdev_set_fmt() 200 crop->left = 0; in ipu6_isys_subdev_set_fmt() 201 crop->top = 0; in ipu6_isys_subdev_set_fmt() 202 crop->width = fmt->width; in ipu6_isys_subdev_set_fmt() 203 crop->height = fmt->height; in ipu6_isys_subdev_set_fmt() 265 struct v4l2_rect *crop) in ipu6_isys_get_stream_pad_crop() argument 270 if (!sd || !crop) in ipu6_isys_get_stream_pad_crop() 276 *crop = *rect; in ipu6_isys_get_stream_pad_crop()
|