/linux-6.6.21/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.6.21/drivers/staging/media/atomisp/pci/ |
D | atomisp_subdev.c | 251 return &isp_sd->fmt[pad].crop; in atomisp_subdev_get_rect() 276 struct v4l2_rect *crop[ATOMISP_SUBDEV_PADS_NUM], in isp_get_fmt_rect() 283 crop[i] = atomisp_subdev_get_rect(sd, sd_state, which, i, in isp_get_fmt_rect() 296 struct v4l2_rect *crop[ATOMISP_SUBDEV_PADS_NUM], in isp_subdev_propagate() local 302 isp_get_fmt_rect(sd, sd_state, which, ffmt, crop, comp); in isp_subdev_propagate() 358 struct v4l2_rect *crop[ATOMISP_SUBDEV_PADS_NUM], in atomisp_subdev_set_selection() local 365 isp_get_fmt_rect(sd, sd_state, which, ffmt, crop, comp); in atomisp_subdev_set_selection() 382 crop[pad]->width = ffmt[pad]->width; in atomisp_subdev_set_selection() 383 crop[pad]->height = ffmt[pad]->height; in atomisp_subdev_set_selection() 386 && crop[pad]->width && crop[pad]->height) { in atomisp_subdev_set_selection() [all …]
|
/linux-6.6.21/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.6.21/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() 1164 return &priv->crop; in __csi_get_crop() 1179 struct v4l2_rect *crop, in csi_try_crop() argument 1186 crop->width = min_t(__u32, infmt->width, crop->width); in csi_try_crop() [all …]
|
/linux-6.6.21/drivers/media/platform/renesas/vsp1/ |
D | vsp1_rpf.c | 303 struct v4l2_rect crop; in rpf_configure_partition() local 313 crop = *vsp1_rwpf_get_crop(rpf, rpf->entity.config); in rpf_configure_partition() 326 crop.width = pipe->partition->rpf.width; in rpf_configure_partition() 327 crop.left += pipe->partition->rpf.left; in rpf_configure_partition() 331 crop.height = round_down(crop.height / 2, fmtinfo->vsub); in rpf_configure_partition() 332 crop.top = round_down(crop.top / 2, fmtinfo->vsub); in rpf_configure_partition() 336 (crop.width << VI6_RPF_SRC_BSIZE_BHSIZE_SHIFT) | in rpf_configure_partition() 337 (crop.height << VI6_RPF_SRC_BSIZE_BVSIZE_SHIFT)); in rpf_configure_partition() 339 (crop.width << VI6_RPF_SRC_ESIZE_EHSIZE_SHIFT) | in rpf_configure_partition() 340 (crop.height << VI6_RPF_SRC_ESIZE_EVSIZE_SHIFT)); in rpf_configure_partition() [all …]
|
D | vsp1_hgt.c | 135 struct v4l2_rect *crop; in hgt_configure_stream() local 142 crop = vsp1_entity_get_pad_selection(entity, entity->config, in hgt_configure_stream() 151 (crop->left << VI6_HGT_OFFSET_HOFFSET_SHIFT) | in hgt_configure_stream() 152 (crop->top << VI6_HGT_OFFSET_VOFFSET_SHIFT)); in hgt_configure_stream() 154 (crop->width << VI6_HGT_SIZE_HSIZE_SHIFT) | in hgt_configure_stream() 155 (crop->height << VI6_HGT_SIZE_VSIZE_SHIFT)); in hgt_configure_stream() 167 hratio = crop->width * 2 / compose->width / 3; in hgt_configure_stream() 168 vratio = crop->height * 2 / compose->height / 3; in hgt_configure_stream()
|
D | vsp1_rwpf.c | 107 struct v4l2_rect *crop; in vsp1_rwpf_set_format() local 110 crop = vsp1_rwpf_get_crop(rwpf, config); in vsp1_rwpf_set_format() 111 crop->left = 0; in vsp1_rwpf_set_format() 112 crop->top = 0; in vsp1_rwpf_set_format() 113 crop->width = fmt->format.width; in vsp1_rwpf_set_format() 114 crop->height = fmt->format.height; in vsp1_rwpf_set_format() 188 struct v4l2_rect *crop; in vsp1_rwpf_set_selection() local 232 crop = vsp1_rwpf_get_crop(rwpf, config); in vsp1_rwpf_set_selection() 233 *crop = sel->r; in vsp1_rwpf_set_selection() 238 format->width = crop->width; in vsp1_rwpf_set_selection() [all …]
|
D | vsp1_hgo.c | 139 struct v4l2_rect *crop; in hgo_configure_stream() local 143 crop = vsp1_entity_get_pad_selection(entity, entity->config, in hgo_configure_stream() 152 (crop->left << VI6_HGO_OFFSET_HOFFSET_SHIFT) | in hgo_configure_stream() 153 (crop->top << VI6_HGO_OFFSET_VOFFSET_SHIFT)); in hgo_configure_stream() 155 (crop->width << VI6_HGO_SIZE_HSIZE_SHIFT) | in hgo_configure_stream() 156 (crop->height << VI6_HGO_SIZE_VSIZE_SHIFT)); in hgo_configure_stream() 164 hratio = crop->width * 2 / compose->width / 3; in hgo_configure_stream() 165 vratio = crop->height * 2 / compose->height / 3; in hgo_configure_stream()
|
D | vsp1_histo.c | 208 struct v4l2_rect *crop; in histo_get_selection() local 226 crop = vsp1_entity_get_pad_selection(&histo->entity, config, in histo_get_selection() 231 sel->r.width = crop->width; in histo_get_selection() 232 sel->r.height = crop->height; in histo_get_selection() 298 struct v4l2_rect *crop; in histo_set_compose() local 309 crop = vsp1_entity_get_pad_selection(&histo->entity, sd_state, in histo_set_compose() 327 sel->r.width = clamp(sel->r.width, crop->width / 4, crop->width); in histo_set_compose() 328 ratio = 1 << (crop->width * 2 / sel->r.width / 3); in histo_set_compose() 329 sel->r.width = crop->width / ratio; in histo_set_compose() 332 sel->r.height = clamp(sel->r.height, crop->height / 4, crop->height); in histo_set_compose() [all …]
|
/linux-6.6.21/Documentation/userspace-api/media/drivers/ |
D | ccs.rst | 20 as analogue crop functionality present in many compliant devices. The analogue 21 crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the 32 Additionally, if a device has no scaler or digital crop functionality, the 33 source pad (1) expses another digital crop selection rectangle that can only 34 crop at the end of the lines and frames. 39 The scaler sub-device represents the digital crop and scaling functionality of 41 configure the digital crop on the sink pad (0) when digital crop is supported. 46 another digital crop selection rectangle that can only crop at the end of the 49 Digital and analogue crop 52 Digital crop functionality is referred to as cropping that effectively works by [all …]
|
/linux-6.6.21/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 …]
|
D | vidioc-subdev-g-crop.rst | 13 VIDIOC_SUBDEV_G_CROP - VIDIOC_SUBDEV_S_CROP - Get or set the crop rectangle on a subdev pad 44 To retrieve the current crop rectangle applications set the ``pad`` 53 To change the current crop rectangle applications set both the ``pad`` 56 structure. The driver verifies the requested crop rectangle, adjusts it 63 to ``V4L2_SUBDEV_FORMAT_TRY``. When set, 'try' crop rectangles are not 65 crop rectangles and stored in the sub-device file handle. Two 74 Drivers must not return an error solely because the requested crop 114 The crop rectangle can't be changed because the pad is currently
|
/linux-6.6.21/drivers/media/platform/ti/omap3isp/ |
D | ispresizer.c | 142 return &res->crop.request; in __resizer_get_crop() 508 clock = div_u64((u64)limit * res->crop.active.height, ofmt->height); in omap3isp_resizer_max_rate() 510 *max_rate = div_u64((u64)clock * res->crop.active.width, ofmt->width); in omap3isp_resizer_max_rate() 589 requests_per_frame = DIV_ROUND_UP(res->crop.active.width * 2, 256) in resizer_adjust_bandwidth() 590 * res->crop.active.height; in resizer_adjust_bandwidth() 927 res->crop_offset = (res->crop.active.top * input->width + in resizer_set_crop_params() 928 res->crop.active.left) * 2; in resizer_set_crop_params() 947 resizer_set_start(res, res->crop.active.left * 2, in resizer_set_crop_params() 948 res->crop.active.top); in resizer_set_crop_params() 955 resizer_set_input_size(res, res->crop.active.width, in resizer_set_crop_params() [all …]
|
/linux-6.6.21/Documentation/driver-api/media/drivers/ccs/ |
D | ccs.rst | 20 as analogue crop functionality present in many compliant devices. The analogue 21 crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the 32 Additionally, if a device has no scaler or digital crop functionality, the 33 source pad (1) expses another digital crop selection rectangle that can only 34 crop at the end of the lines and frames. 39 The scaler sub-device represents the digital crop and scaling functionality of 41 configure the digital crop on the sink pad (0) when digital crop is supported. 46 another digital crop selection rectangle that can only crop at the end of the 49 Digital and analogue crop 52 Digital crop functionality is referred to as cropping that effectively works by [all …]
|
/linux-6.6.21/drivers/media/i2c/ |
D | imx296.c | 510 const struct v4l2_rect *crop; in imx296_setup() local 515 crop = v4l2_subdev_get_pad_crop(&sensor->subdev, 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 | ov2680.c | 136 struct v4l2_rect crop; member 326 return &sensor->mode.crop; in __ov2680_get_pad_crop() 348 if (width <= (sensor->mode.crop.width / 2) && in ov2680_calc_mode() 349 height <= (sensor->mode.crop.height / 2)) { in ov2680_calc_mode() 357 sensor->mode.h_start = (sensor->mode.crop.left + in ov2680_calc_mode() 358 (sensor->mode.crop.width - width) / 2) & ~1; in ov2680_calc_mode() 359 sensor->mode.v_start = (sensor->mode.crop.top + in ov2680_calc_mode() 360 (sensor->mode.crop.height - height) / 2) & ~1; in ov2680_calc_mode() 637 const struct v4l2_rect *crop; in ov2680_set_fmt() local 641 crop = __ov2680_get_pad_crop(sensor, sd_state, format->pad, in ov2680_set_fmt() [all …]
|
/linux-6.6.21/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.6.21/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.6.21/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.6.21/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.6.21/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.6.21/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() 418 static void mdp_set_src_crop(struct img_crop *c, struct mdp_crop *crop) in mdp_set_src_crop() argument 420 c->left = crop->c.left in mdp_set_src_crop() 421 + mdp_to_fixed(&c->left_subpix, &crop->left_subpix); in mdp_set_src_crop() 422 c->top = crop->c.top in mdp_set_src_crop() 423 + mdp_to_fixed(&c->top_subpix, &crop->top_subpix); in mdp_set_src_crop() 424 c->width = crop->c.width in mdp_set_src_crop() 425 + mdp_to_fixed(&c->width_subpix, &crop->width_subpix); in mdp_set_src_crop() [all …]
|
/linux-6.6.21/drivers/media/platform/rockchip/rkisp1/ |
D | rkisp1-common.c | 162 void rkisp1_sd_adjust_crop_rect(struct v4l2_rect *crop, in rkisp1_sd_adjust_crop_rect() argument 165 v4l2_rect_set_min_size(crop, &rkisp1_sd_min_crop); in rkisp1_sd_adjust_crop_rect() 166 v4l2_rect_map_inside(crop, bounds); in rkisp1_sd_adjust_crop_rect() 169 void rkisp1_sd_adjust_crop(struct v4l2_rect *crop, in rkisp1_sd_adjust_crop() argument 179 rkisp1_sd_adjust_crop_rect(crop, &crop_bounds); in rkisp1_sd_adjust_crop()
|