1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 .. c:namespace:: V4L 2 .. c:namespace:: V4L 3 3 4 .. _VIDIOC_G_FBUF: 4 .. _VIDIOC_G_FBUF: 5 5 6 ********************************** 6 ********************************** 7 ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF 7 ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF 8 ********************************** 8 ********************************** 9 9 10 Name 10 Name 11 ==== 11 ==== 12 12 13 VIDIOC_G_FBUF - VIDIOC_S_FBUF - Get or set fra 13 VIDIOC_G_FBUF - VIDIOC_S_FBUF - Get or set frame buffer overlay parameters 14 14 15 Synopsis 15 Synopsis 16 ======== 16 ======== 17 17 18 .. c:macro:: VIDIOC_G_FBUF 18 .. c:macro:: VIDIOC_G_FBUF 19 19 20 ``int ioctl(int fd, VIDIOC_G_FBUF, struct v4l2 20 ``int ioctl(int fd, VIDIOC_G_FBUF, struct v4l2_framebuffer *argp)`` 21 21 22 .. c:macro:: VIDIOC_S_FBUF 22 .. c:macro:: VIDIOC_S_FBUF 23 23 24 ``int ioctl(int fd, VIDIOC_S_FBUF, const struc 24 ``int ioctl(int fd, VIDIOC_S_FBUF, const struct v4l2_framebuffer *argp)`` 25 25 26 Arguments 26 Arguments 27 ========= 27 ========= 28 28 29 ``fd`` 29 ``fd`` 30 File descriptor returned by :c:func:`open( 30 File descriptor returned by :c:func:`open()`. 31 31 32 ``argp`` 32 ``argp`` 33 Pointer to struct :c:type:`v4l2_framebuffe 33 Pointer to struct :c:type:`v4l2_framebuffer`. 34 34 35 Description 35 Description 36 =========== 36 =========== 37 37 38 Applications can use the :ref:`VIDIOC_G_FBUF < 38 Applications can use the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctl 39 to get and set the framebuffer parameters for 39 to get and set the framebuffer parameters for a 40 :ref:`Video Overlay <overlay>` or :ref:`Video 40 :ref:`Video Overlay <overlay>` or :ref:`Video Output Overlay <osd>` 41 (OSD). The type of overlay is implied by the d 41 (OSD). The type of overlay is implied by the device type (capture or 42 output device) and can be determined with the 42 output device) and can be determined with the 43 :ref:`VIDIOC_QUERYCAP` ioctl. One ``/dev/video 43 :ref:`VIDIOC_QUERYCAP` ioctl. One ``/dev/videoN`` 44 device must not support both kinds of overlay. 44 device must not support both kinds of overlay. 45 45 46 The V4L2 API distinguishes destructive and non 46 The V4L2 API distinguishes destructive and non-destructive overlays. A 47 destructive overlay copies captured video imag 47 destructive overlay copies captured video images into the video memory 48 of a graphics card. A non-destructive overlay 48 of a graphics card. A non-destructive overlay blends video images into a 49 VGA signal or graphics into a video signal. *V 49 VGA signal or graphics into a video signal. *Video Output Overlays* are 50 always non-destructive. 50 always non-destructive. 51 51 52 Destructive overlay support has been removed: << 53 this is no longer needed, and it was always a << 54 << 55 To get the current parameters applications cal 52 To get the current parameters applications call the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` 56 ioctl with a pointer to a struct :c:type:`v4l2 53 ioctl with a pointer to a struct :c:type:`v4l2_framebuffer` 57 structure. The driver fills all fields of the 54 structure. The driver fills all fields of the structure or returns an 58 EINVAL error code when overlays are not suppor 55 EINVAL error code when overlays are not supported. 59 56 60 To set the parameters for a *Video Output Over 57 To set the parameters for a *Video Output Overlay*, applications must 61 initialize the ``flags`` field of a struct 58 initialize the ``flags`` field of a struct 62 :c:type:`v4l2_framebuffer`. Since the framebuf 59 :c:type:`v4l2_framebuffer`. Since the framebuffer is 63 implemented on the TV card all other parameter 60 implemented on the TV card all other parameters are determined by the 64 driver. When an application calls :ref:`VIDIOC 61 driver. When an application calls :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` with a pointer to 65 this structure, the driver prepares for the ov 62 this structure, the driver prepares for the overlay and returns the 66 framebuffer parameters as :ref:`VIDIOC_G_FBUF 63 framebuffer parameters as :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` does, or it returns an error 67 code. 64 code. 68 65 69 To set the parameters for a *Video Capture Ove !! 66 To set the parameters for a *non-destructive Video Overlay*, 70 applications must initialize the ``flags`` fie 67 applications must initialize the ``flags`` field, the ``fmt`` 71 substructure, and call :ref:`VIDIOC_S_FBUF <VI 68 substructure, and call :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`. Again the driver prepares for 72 the overlay and returns the framebuffer parame 69 the overlay and returns the framebuffer parameters as :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` 73 does, or it returns an error code. 70 does, or it returns an error code. 74 71 >> 72 For a *destructive Video Overlay* applications must additionally provide >> 73 a ``base`` address. Setting up a DMA to a random memory location can >> 74 jeopardize the system security, its stability or even damage the >> 75 hardware, therefore only the superuser can set the parameters for a >> 76 destructive video overlay. >> 77 75 .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm 78 .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{6.6cm}| 76 79 77 .. c:type:: v4l2_framebuffer 80 .. c:type:: v4l2_framebuffer 78 81 79 .. cssclass:: longtable 82 .. cssclass:: longtable 80 83 81 .. flat-table:: struct v4l2_framebuffer 84 .. flat-table:: struct v4l2_framebuffer 82 :header-rows: 0 85 :header-rows: 0 83 :stub-columns: 0 86 :stub-columns: 0 84 :widths: 1 1 1 2 87 :widths: 1 1 1 2 85 88 86 * - __u32 89 * - __u32 87 - ``capability`` 90 - ``capability`` 88 - 91 - 89 - Overlay capability flags set by the dr 92 - Overlay capability flags set by the driver, see 90 :ref:`framebuffer-cap`. 93 :ref:`framebuffer-cap`. 91 * - __u32 94 * - __u32 92 - ``flags`` 95 - ``flags`` 93 - 96 - 94 - Overlay control flags set by applicati 97 - Overlay control flags set by application and driver, see 95 :ref:`framebuffer-flags` 98 :ref:`framebuffer-flags` 96 * - void * 99 * - void * 97 - ``base`` 100 - ``base`` 98 - 101 - 99 - Physical base address of the framebuff 102 - Physical base address of the framebuffer, that is the address of 100 the pixel in the top left corner of th !! 103 the pixel in the top left corner of the framebuffer. [#f1]_ 101 For :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF !! 104 * - 102 and the kernel will always set this to !! 105 - 103 For *Video Output Overlays* !! 106 - 104 the driver will return a valid base ad !! 107 - This field is irrelevant to *non-destructive Video Overlays*. For >> 108 *destructive Video Overlays* applications must provide a base >> 109 address. The driver may accept only base addresses which are a >> 110 multiple of two, four or eight bytes. For *Video Output Overlays* >> 111 the driver must return a valid base address, so applications can 105 find the corresponding Linux framebuff 112 find the corresponding Linux framebuffer device (see 106 :ref:`osd`). For *Video Capture Overla !! 113 :ref:`osd`). 107 NULL. << 108 * - struct 114 * - struct 109 - ``fmt`` 115 - ``fmt`` 110 - 116 - 111 - Layout of the frame buffer. 117 - Layout of the frame buffer. 112 * - 118 * - 113 - __u32 119 - __u32 114 - ``width`` 120 - ``width`` 115 - Width of the frame buffer in pixels. 121 - Width of the frame buffer in pixels. 116 * - 122 * - 117 - __u32 123 - __u32 118 - ``height`` 124 - ``height`` 119 - Height of the frame buffer in pixels. 125 - Height of the frame buffer in pixels. 120 * - 126 * - 121 - __u32 127 - __u32 122 - ``pixelformat`` 128 - ``pixelformat`` 123 - The pixel format of the framebuffer. 129 - The pixel format of the framebuffer. 124 * - 130 * - 125 - 131 - 126 - 132 - 127 - For *non-destructive Video Overlays* t 133 - For *non-destructive Video Overlays* this field only defines a 128 format for the struct :c:type:`v4l2_wi 134 format for the struct :c:type:`v4l2_window` 129 ``chromakey`` field. 135 ``chromakey`` field. 130 * - 136 * - 131 - 137 - 132 - 138 - 133 - For *Video Output Overlays* the driver !! 139 - For *destructive Video Overlays* applications must initialize this >> 140 field. For *Video Output Overlays* the driver must return a valid 134 format. 141 format. 135 * - 142 * - 136 - 143 - 137 - 144 - 138 - Usually this is an RGB format (for exa 145 - Usually this is an RGB format (for example 139 :ref:`V4L2_PIX_FMT_RGB565 <V4L2-PIX-FM 146 :ref:`V4L2_PIX_FMT_RGB565 <V4L2-PIX-FMT-RGB565>`) but YUV 140 formats (only packed YUV formats when 147 formats (only packed YUV formats when chroma keying is used, not 141 including ``V4L2_PIX_FMT_YUYV`` and `` 148 including ``V4L2_PIX_FMT_YUYV`` and ``V4L2_PIX_FMT_UYVY``) and the 142 ``V4L2_PIX_FMT_PAL8`` format are also 149 ``V4L2_PIX_FMT_PAL8`` format are also permitted. The behavior of 143 the driver when an application request 150 the driver when an application requests a compressed format is 144 undefined. See :ref:`pixfmt` for infor 151 undefined. See :ref:`pixfmt` for information on pixel formats. 145 * - 152 * - 146 - enum :c:type:`v4l2_field` 153 - enum :c:type:`v4l2_field` 147 - ``field`` 154 - ``field`` 148 - Drivers and applications shall ignore 155 - Drivers and applications shall ignore this field. If applicable, 149 the field order is selected with the 156 the field order is selected with the 150 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioc 157 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, using the ``field`` 151 field of struct :c:type:`v4l2_window`. 158 field of struct :c:type:`v4l2_window`. 152 * - 159 * - 153 - __u32 160 - __u32 154 - ``bytesperline`` 161 - ``bytesperline`` 155 - Distance in bytes between the leftmost 162 - Distance in bytes between the leftmost pixels in two adjacent 156 lines. 163 lines. 157 * - :cspan:`3` 164 * - :cspan:`3` 158 165 159 This field is irrelevant to *non-destr 166 This field is irrelevant to *non-destructive Video Overlays*. 160 167 >> 168 For *destructive Video Overlays* both applications and drivers can >> 169 set this field to request padding bytes at the end of each line. >> 170 Drivers however may ignore the requested value, returning >> 171 ``width`` times bytes-per-pixel or a larger value required by the >> 172 hardware. That implies applications can just set this field to >> 173 zero to get a reasonable default. >> 174 161 For *Video Output Overlays* the driver 175 For *Video Output Overlays* the driver must return a valid value. 162 176 163 Video hardware may access padding byte 177 Video hardware may access padding bytes, therefore they must 164 reside in accessible memory. Consider 178 reside in accessible memory. Consider for example the case where 165 padding bytes after the last line of a 179 padding bytes after the last line of an image cross a system page 166 boundary. Capture devices may write pa 180 boundary. Capture devices may write padding bytes, the value is 167 undefined. Output devices ignore the c 181 undefined. Output devices ignore the contents of padding bytes. 168 182 169 When the image format is planar the `` 183 When the image format is planar the ``bytesperline`` value applies 170 to the first plane and is divided by t 184 to the first plane and is divided by the same factor as the 171 ``width`` field for the other planes. 185 ``width`` field for the other planes. For example the Cb and Cr 172 planes of a YUV 4:2:0 image have half 186 planes of a YUV 4:2:0 image have half as many padding bytes 173 following each line as the Y plane. To 187 following each line as the Y plane. To avoid ambiguities drivers 174 must return a ``bytesperline`` value r 188 must return a ``bytesperline`` value rounded up to a multiple of 175 the scale factor. 189 the scale factor. 176 * - 190 * - 177 - __u32 191 - __u32 178 - ``sizeimage`` 192 - ``sizeimage`` 179 - This field is irrelevant to *non-destr !! 193 - This field is irrelevant to *non-destructive Video Overlays*. For 180 For *Video Output Overlays* the driver !! 194 *destructive Video Overlays* applications must initialize this >> 195 field. For *Video Output Overlays* the driver must return a valid 181 format. 196 format. 182 197 183 Together with ``base`` it defines the 198 Together with ``base`` it defines the framebuffer memory 184 accessible by the driver. 199 accessible by the driver. 185 * - 200 * - 186 - enum :c:type:`v4l2_colorspace` 201 - enum :c:type:`v4l2_colorspace` 187 - ``colorspace`` 202 - ``colorspace`` 188 - This information supplements the ``pix 203 - This information supplements the ``pixelformat`` and must be set 189 by the driver, see :ref:`colorspaces`. 204 by the driver, see :ref:`colorspaces`. 190 * - 205 * - 191 - __u32 206 - __u32 192 - ``priv`` 207 - ``priv`` 193 - Reserved. Drivers and applications mus 208 - Reserved. Drivers and applications must set this field to zero. 194 209 195 .. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm 210 .. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm}| 196 211 197 .. _framebuffer-cap: 212 .. _framebuffer-cap: 198 213 199 .. flat-table:: Frame Buffer Capability Flags 214 .. flat-table:: Frame Buffer Capability Flags 200 :header-rows: 0 215 :header-rows: 0 201 :stub-columns: 0 216 :stub-columns: 0 202 :widths: 3 1 4 217 :widths: 3 1 4 203 218 204 * - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` 219 * - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` 205 - 0x0001 220 - 0x0001 206 - The device is capable of non-destructi 221 - The device is capable of non-destructive overlays. When the driver 207 clears this flag, only destructive ove 222 clears this flag, only destructive overlays are supported. There 208 are no drivers yet which support both 223 are no drivers yet which support both destructive and 209 non-destructive overlays. Video Output 224 non-destructive overlays. Video Output Overlays are in practice 210 always non-destructive. 225 always non-destructive. 211 * - ``V4L2_FBUF_CAP_CHROMAKEY`` 226 * - ``V4L2_FBUF_CAP_CHROMAKEY`` 212 - 0x0002 227 - 0x0002 213 - The device supports clipping by chroma 228 - The device supports clipping by chroma-keying the images. That is, 214 image pixels replace pixels in the VGA 229 image pixels replace pixels in the VGA or video signal only where 215 the latter assume a certain color. Chr 230 the latter assume a certain color. Chroma-keying makes no sense 216 for destructive overlays. 231 for destructive overlays. 217 * - ``V4L2_FBUF_CAP_LIST_CLIPPING`` 232 * - ``V4L2_FBUF_CAP_LIST_CLIPPING`` 218 - 0x0004 233 - 0x0004 219 - The device supports clipping using a l 234 - The device supports clipping using a list of clip rectangles. 220 Note that this is no longer supported. << 221 * - ``V4L2_FBUF_CAP_BITMAP_CLIPPING`` 235 * - ``V4L2_FBUF_CAP_BITMAP_CLIPPING`` 222 - 0x0008 236 - 0x0008 223 - The device supports clipping using a b 237 - The device supports clipping using a bit mask. 224 Note that this is no longer supported. << 225 * - ``V4L2_FBUF_CAP_LOCAL_ALPHA`` 238 * - ``V4L2_FBUF_CAP_LOCAL_ALPHA`` 226 - 0x0010 239 - 0x0010 227 - The device supports clipping/blending 240 - The device supports clipping/blending using the alpha channel of 228 the framebuffer or VGA signal. Alpha b 241 the framebuffer or VGA signal. Alpha blending makes no sense for 229 destructive overlays. 242 destructive overlays. 230 * - ``V4L2_FBUF_CAP_GLOBAL_ALPHA`` 243 * - ``V4L2_FBUF_CAP_GLOBAL_ALPHA`` 231 - 0x0020 244 - 0x0020 232 - The device supports alpha blending usi 245 - The device supports alpha blending using a global alpha value. 233 Alpha blending makes no sense for dest 246 Alpha blending makes no sense for destructive overlays. 234 * - ``V4L2_FBUF_CAP_LOCAL_INV_ALPHA`` 247 * - ``V4L2_FBUF_CAP_LOCAL_INV_ALPHA`` 235 - 0x0040 248 - 0x0040 236 - The device supports clipping/blending 249 - The device supports clipping/blending using the inverted alpha 237 channel of the framebuffer or VGA sign 250 channel of the framebuffer or VGA signal. Alpha blending makes no 238 sense for destructive overlays. 251 sense for destructive overlays. 239 * - ``V4L2_FBUF_CAP_SRC_CHROMAKEY`` 252 * - ``V4L2_FBUF_CAP_SRC_CHROMAKEY`` 240 - 0x0080 253 - 0x0080 241 - The device supports Source Chroma-keyi 254 - The device supports Source Chroma-keying. Video pixels with the 242 chroma-key colors are replaced by fram 255 chroma-key colors are replaced by framebuffer pixels, which is 243 exactly opposite of ``V4L2_FBUF_CAP_CH 256 exactly opposite of ``V4L2_FBUF_CAP_CHROMAKEY`` 244 257 245 .. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm 258 .. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm}| 246 259 247 .. _framebuffer-flags: 260 .. _framebuffer-flags: 248 261 249 .. cssclass:: longtable 262 .. cssclass:: longtable 250 263 251 .. flat-table:: Frame Buffer Flags 264 .. flat-table:: Frame Buffer Flags 252 :header-rows: 0 265 :header-rows: 0 253 :stub-columns: 0 266 :stub-columns: 0 254 :widths: 3 1 4 267 :widths: 3 1 4 255 268 256 * - ``V4L2_FBUF_FLAG_PRIMARY`` 269 * - ``V4L2_FBUF_FLAG_PRIMARY`` 257 - 0x0001 270 - 0x0001 258 - The framebuffer is the primary graphic 271 - The framebuffer is the primary graphics surface. In other words, 259 the overlay is destructive. This flag 272 the overlay is destructive. This flag is typically set by any 260 driver that doesn't have the ``V4L2_FB 273 driver that doesn't have the ``V4L2_FBUF_CAP_EXTERNOVERLAY`` 261 capability and it is cleared otherwise 274 capability and it is cleared otherwise. 262 * - ``V4L2_FBUF_FLAG_OVERLAY`` 275 * - ``V4L2_FBUF_FLAG_OVERLAY`` 263 - 0x0002 276 - 0x0002 264 - If this flag is set for a video captur 277 - If this flag is set for a video capture device, then the driver 265 will set the initial overlay size to c 278 will set the initial overlay size to cover the full framebuffer 266 size, otherwise the existing overlay s 279 size, otherwise the existing overlay size (as set by 267 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`) wi 280 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`) will be used. Only one 268 video capture driver (bttv) supports t 281 video capture driver (bttv) supports this flag. The use of this 269 flag for capture devices is deprecated 282 flag for capture devices is deprecated. There is no way to detect 270 which drivers support this flag, so th 283 which drivers support this flag, so the only reliable method of 271 setting the overlay size is through 284 setting the overlay size is through 272 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. If 285 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. If this flag is set for a 273 video output device, then the video ou 286 video output device, then the video output overlay window is 274 relative to the top-left corner of the 287 relative to the top-left corner of the framebuffer and restricted 275 to the size of the framebuffer. If it 288 to the size of the framebuffer. If it is cleared, then the video 276 output overlay window is relative to t 289 output overlay window is relative to the video output display. 277 * - ``V4L2_FBUF_FLAG_CHROMAKEY`` 290 * - ``V4L2_FBUF_FLAG_CHROMAKEY`` 278 - 0x0004 291 - 0x0004 279 - Use chroma-keying. The chroma-key colo 292 - Use chroma-keying. The chroma-key color is determined by the 280 ``chromakey`` field of struct :c:type: 293 ``chromakey`` field of struct :c:type:`v4l2_window` 281 and negotiated with the :ref:`VIDIOC_S 294 and negotiated with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` 282 ioctl, see :ref:`overlay` and :ref:`os 295 ioctl, see :ref:`overlay` and :ref:`osd`. 283 * - :cspan:`2` There are no flags to enabl 296 * - :cspan:`2` There are no flags to enable clipping using a list of 284 clip rectangles or a bitmap. These met 297 clip rectangles or a bitmap. These methods are negotiated with the 285 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioc 298 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay` 286 and :ref:`osd`. 299 and :ref:`osd`. 287 * - ``V4L2_FBUF_FLAG_LOCAL_ALPHA`` 300 * - ``V4L2_FBUF_FLAG_LOCAL_ALPHA`` 288 - 0x0008 301 - 0x0008 289 - Use the alpha channel of the framebuff 302 - Use the alpha channel of the framebuffer to clip or blend 290 framebuffer pixels with video images. 303 framebuffer pixels with video images. The blend function is: 291 output = framebuffer pixel * alpha + v 304 output = framebuffer pixel * alpha + video pixel * (1 - alpha). 292 The actual alpha depth depends on the 305 The actual alpha depth depends on the framebuffer pixel format. 293 * - ``V4L2_FBUF_FLAG_GLOBAL_ALPHA`` 306 * - ``V4L2_FBUF_FLAG_GLOBAL_ALPHA`` 294 - 0x0010 307 - 0x0010 295 - Use a global alpha value to blend the 308 - Use a global alpha value to blend the framebuffer with video 296 images. The blend function is: output 309 images. The blend function is: output = (framebuffer pixel * alpha 297 + video pixel * (255 - alpha)) / 255. 310 + video pixel * (255 - alpha)) / 255. The alpha value is 298 determined by the ``global_alpha`` fie 311 determined by the ``global_alpha`` field of struct 299 :c:type:`v4l2_window` and negotiated w 312 :c:type:`v4l2_window` and negotiated with the 300 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioc 313 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay` 301 and :ref:`osd`. 314 and :ref:`osd`. 302 * - ``V4L2_FBUF_FLAG_LOCAL_INV_ALPHA`` 315 * - ``V4L2_FBUF_FLAG_LOCAL_INV_ALPHA`` 303 - 0x0020 316 - 0x0020 304 - Like ``V4L2_FBUF_FLAG_LOCAL_ALPHA``, u 317 - Like ``V4L2_FBUF_FLAG_LOCAL_ALPHA``, use the alpha channel of the 305 framebuffer to clip or blend framebuff 318 framebuffer to clip or blend framebuffer pixels with video images, 306 but with an inverted alpha value. The 319 but with an inverted alpha value. The blend function is: output = 307 framebuffer pixel * (1 - alpha) + vide 320 framebuffer pixel * (1 - alpha) + video pixel * alpha. The actual 308 alpha depth depends on the framebuffer 321 alpha depth depends on the framebuffer pixel format. 309 * - ``V4L2_FBUF_FLAG_SRC_CHROMAKEY`` 322 * - ``V4L2_FBUF_FLAG_SRC_CHROMAKEY`` 310 - 0x0040 323 - 0x0040 311 - Use source chroma-keying. The source c 324 - Use source chroma-keying. The source chroma-key color is 312 determined by the ``chromakey`` field 325 determined by the ``chromakey`` field of struct 313 :c:type:`v4l2_window` and negotiated w 326 :c:type:`v4l2_window` and negotiated with the 314 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioc 327 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay` 315 and :ref:`osd`. Both chroma-keying are 328 and :ref:`osd`. Both chroma-keying are mutual exclusive to each 316 other, so same ``chromakey`` field of 329 other, so same ``chromakey`` field of struct 317 :c:type:`v4l2_window` is being used. 330 :c:type:`v4l2_window` is being used. 318 331 319 Return Value 332 Return Value 320 ============ 333 ============ 321 334 322 On success 0 is returned, on error -1 and the 335 On success 0 is returned, on error -1 and the ``errno`` variable is set 323 appropriately. The generic error codes are des 336 appropriately. The generic error codes are described at the 324 :ref:`Generic Error Codes <gen-errors>` chapte 337 :ref:`Generic Error Codes <gen-errors>` chapter. 325 338 326 EPERM 339 EPERM 327 :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` can o 340 :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` can only be called by a privileged user to 328 negotiate the parameters for a destructive 341 negotiate the parameters for a destructive overlay. 329 342 330 EINVAL 343 EINVAL 331 The :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` p 344 The :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` parameters are unsuitable. >> 345 >> 346 .. [#f1] >> 347 A physical base address may not suit all platforms. GK notes in >> 348 theory we should pass something like PCI device + memory region + >> 349 offset instead. If you encounter problems please discuss on the >> 350 linux-media mailing list: >> 351 `https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.