[media] docs-rst: add tabularcolumns to all tables
[deliverable/linux.git] / Documentation / media / uapi / v4l / selection-api-006.rst
1 .. -*- coding: utf-8; mode: rst -*-
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;
This page took 0.032826 seconds and 5 git commands to generate.