~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/userspace-api/media/v4l/selection-api-examples.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
  2 
  3 ********
  4 Examples
  5 ********
  6 
  7 (A video capture device is assumed; change
  8 ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` for other devices; change target to
  9 ``V4L2_SEL_TGT_COMPOSE_*`` family to configure composing area)
 10 
 11 Example: Resetting the cropping parameters
 12 ==========================================
 13 
 14 .. code-block:: c
 15 
 16         struct v4l2_selection sel = {
 17             .type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
 18             .target = V4L2_SEL_TGT_CROP_DEFAULT,
 19         };
 20         ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
 21         if (ret)
 22             exit(-1);
 23         sel.target = V4L2_SEL_TGT_CROP;
 24         ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
 25         if (ret)
 26             exit(-1);
 27 
 28 Setting a composing area on output of size of *at most* half of limit
 29 placed at a center of a display.
 30 
 31 Example: Simple downscaling
 32 ===========================
 33 
 34 .. code-block:: c
 35 
 36         struct v4l2_selection sel = {
 37             .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
 38             .target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
 39         };
 40         struct v4l2_rect r;
 41 
 42         ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
 43         if (ret)
 44             exit(-1);
 45         /* setting smaller compose rectangle */
 46         r.width = sel.r.width / 2;
 47         r.height = sel.r.height / 2;
 48         r.left = sel.r.width / 4;
 49         r.top = sel.r.height / 4;
 50         sel.r = r;
 51         sel.target = V4L2_SEL_TGT_COMPOSE;
 52         sel.flags = V4L2_SEL_FLAG_LE;
 53         ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
 54         if (ret)
 55             exit(-1);
 56 
 57 A video output device is assumed; change ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
 58 for other devices
 59 
 60 Example: Querying for scaling factors
 61 =====================================
 62 
 63 .. code-block:: c
 64 
 65         struct v4l2_selection compose = {
 66             .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
 67             .target = V4L2_SEL_TGT_COMPOSE,
 68         };
 69         struct v4l2_selection crop = {
 70             .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
 71             .target = V4L2_SEL_TGT_CROP,
 72         };
 73         double hscale, vscale;
 74 
 75         ret = ioctl(fd, VIDIOC_G_SELECTION, &compose);
 76         if (ret)
 77             exit(-1);
 78         ret = ioctl(fd, VIDIOC_G_SELECTION, &crop);
 79         if (ret)
 80             exit(-1);
 81 
 82         /* computing scaling factors */
 83         hscale = (double)compose.r.width / crop.r.width;
 84         vscale = (double)compose.r.height / crop.r.height;

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php