ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION
&manvol;
VIDIOC_SUBDEV_G_SELECTIONVIDIOC_SUBDEV_S_SELECTIONGet or set selection rectangles on a subdev padint ioctlint fdint requeststruct v4l2_subdev_selection *argpArgumentsfd&fd;requestVIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTIONargpDescriptionExperimentalThis is an experimental
interface and may change in the future.The selections are used to configure various image
processing functionality performed by the subdevs which affect the
image size. This currently includes cropping, scaling and
composition.The selection API replaces the old subdev crop API. All
the function of the crop API, and more, are supported by the
selections API.See for
more information on how each selection target affects the image
processing pipeline inside the subdevice.Types of selection targetsThere are two types of selection targets: actual and bounds.
The ACTUAL targets are the targets which configure the hardware.
The BOUNDS target will return a rectangle that contain all
possible ACTUAL rectangles.Discovering supported featuresTo discover which targets are supported, the user can
perform VIDIOC_SUBDEV_G_SELECTION on them.
Any unsupported target will return
EINVAL.
V4L2 subdev selection targets
&cs-def;
V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL0x0000Actual crop. Defines the cropping
performed by the processing step.V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS0x0002Bounds of the crop rectangle.V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL0x0100Actual compose rectangle. Used to configure scaling
on sink pads and composition on source pads.V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS0x0102Bounds of the compose rectangle.
V4L2 subdev selection flags
&cs-def;
V4L2_SUBDEV_SEL_FLAG_SIZE_GE(1 << 0)Suggest the driver it
should choose greater or equal rectangle (in size) than
was requested. Albeit the driver may choose a lesser size,
it will only do so due to hardware limitations. Without
this flag (and
V4L2_SUBDEV_SEL_FLAG_SIZE_LE) the
behaviour is to choose the closest possible
rectangle.V4L2_SUBDEV_SEL_FLAG_SIZE_LE(1 << 1)Suggest the driver it
should choose lesser or equal rectangle (in size) than was
requested. Albeit the driver may choose a greater size, it
will only do so due to hardware limitations.V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG(1 << 2)The configuration should not be propagated to any
further processing steps. If this flag is not given, the
configuration is propagated inside the subdevice to all
further processing steps.
struct v4l2_subdev_selection
&cs-str;
__u32whichActive or try selection, from
&v4l2-subdev-format-whence;.__u32padPad number as reported by the media framework.__u32targetTarget selection rectangle. See
..__u32flagsFlags. See
.&v4l2-rect;rectSelection rectangle, in pixels.__u32reserved[8]Reserved for future extensions. Applications and drivers must
set the array to zero.
&return-value;
EBUSYThe selection rectangle can't be changed because the
pad is currently busy. This can be caused, for instance, by
an active video stream on the pad. The ioctl must not be
retried without performing another action to fix the problem
first. Only returned by
VIDIOC_SUBDEV_S_SELECTIONEINVALThe &v4l2-subdev-selection;
pad references a non-existing
pad, the which field references a
non-existing format, or the selection target is not
supported on the given subdev pad.