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_DQEVENT: 4 .. _VIDIOC_DQEVENT: 5 5 6 ******************** 6 ******************** 7 ioctl VIDIOC_DQEVENT 7 ioctl VIDIOC_DQEVENT 8 ******************** 8 ******************** 9 9 10 Name 10 Name 11 ==== 11 ==== 12 12 13 VIDIOC_DQEVENT - Dequeue event 13 VIDIOC_DQEVENT - Dequeue event 14 14 15 Synopsis 15 Synopsis 16 ======== 16 ======== 17 17 18 .. c:macro:: VIDIOC_DQEVENT 18 .. c:macro:: VIDIOC_DQEVENT 19 19 20 ``int ioctl(int fd, VIDIOC_DQEVENT, struct v4l 20 ``int ioctl(int fd, VIDIOC_DQEVENT, struct v4l2_event *argp)`` 21 21 22 Arguments 22 Arguments 23 ========= 23 ========= 24 24 25 ``fd`` 25 ``fd`` 26 File descriptor returned by :c:func:`open( 26 File descriptor returned by :c:func:`open()`. 27 27 28 ``argp`` 28 ``argp`` 29 Pointer to struct :c:type:`v4l2_event`. 29 Pointer to struct :c:type:`v4l2_event`. 30 30 31 Description 31 Description 32 =========== 32 =========== 33 33 34 Dequeue an event from a video device. No input 34 Dequeue an event from a video device. No input is required for this 35 ioctl. All the fields of the struct :c:type:`v 35 ioctl. All the fields of the struct :c:type:`v4l2_event` 36 structure are filled by the driver. The file h 36 structure are filled by the driver. The file handle will also receive 37 exceptions which the application may get by e. 37 exceptions which the application may get by e.g. using the select system 38 call. 38 call. 39 39 40 .. c:type:: v4l2_event !! 40 .. tabularcolumns:: |p{3.0cm}|p{4.4cm}|p{2.4cm}|p{7.7cm}| 41 41 42 .. tabularcolumns:: |p{3.0cm}|p{3.4cm}|p{10.9c !! 42 .. c:type:: v4l2_event 43 43 >> 44 .. cssclass: longtable 44 45 45 .. flat-table:: struct v4l2_event 46 .. flat-table:: struct v4l2_event 46 :header-rows: 0 47 :header-rows: 0 47 :stub-columns: 0 48 :stub-columns: 0 48 :widths: 1 1 2 49 :widths: 1 1 2 49 50 50 * - __u32 51 * - __u32 51 - ``type`` 52 - ``type`` 52 - Type of the event, see :ref:`event-typ 53 - Type of the event, see :ref:`event-type`. 53 * - union { 54 * - union { 54 - ``u`` 55 - ``u`` 55 * - struct :c:type:`v4l2_event_vsync` 56 * - struct :c:type:`v4l2_event_vsync` 56 - ``vsync`` 57 - ``vsync`` 57 - Event data for event ``V4L2_EVENT_VSYN 58 - Event data for event ``V4L2_EVENT_VSYNC``. 58 * - struct :c:type:`v4l2_event_ctrl` 59 * - struct :c:type:`v4l2_event_ctrl` 59 - ``ctrl`` 60 - ``ctrl`` 60 - Event data for event ``V4L2_EVENT_CTRL 61 - Event data for event ``V4L2_EVENT_CTRL``. 61 * - struct :c:type:`v4l2_event_frame_sync` 62 * - struct :c:type:`v4l2_event_frame_sync` 62 - ``frame_sync`` 63 - ``frame_sync`` 63 - Event data for event ``V4L2_EVENT_FRAM 64 - Event data for event ``V4L2_EVENT_FRAME_SYNC``. 64 * - struct :c:type:`v4l2_event_motion_det` 65 * - struct :c:type:`v4l2_event_motion_det` 65 - ``motion_det`` 66 - ``motion_det`` 66 - Event data for event V4L2_EVENT_MOTION 67 - Event data for event V4L2_EVENT_MOTION_DET. 67 * - struct :c:type:`v4l2_event_src_change` 68 * - struct :c:type:`v4l2_event_src_change` 68 - ``src_change`` 69 - ``src_change`` 69 - Event data for event V4L2_EVENT_SOURCE 70 - Event data for event V4L2_EVENT_SOURCE_CHANGE. 70 * - __u8 71 * - __u8 71 - ``data``\ [64] 72 - ``data``\ [64] 72 - Event data. Defined by the event type. 73 - Event data. Defined by the event type. The union should be used to 73 define easily accessible type for even 74 define easily accessible type for events. 74 * - } 75 * - } 75 - 76 - 76 * - __u32 77 * - __u32 77 - ``pending`` 78 - ``pending`` 78 - Number of pending events excluding thi 79 - Number of pending events excluding this one. 79 * - __u32 80 * - __u32 80 - ``sequence`` 81 - ``sequence`` 81 - Event sequence number. The sequence nu 82 - Event sequence number. The sequence number is incremented for 82 every subscribed event that takes plac 83 every subscribed event that takes place. If sequence numbers are 83 not contiguous it means that events ha 84 not contiguous it means that events have been lost. 84 * - struct timespec 85 * - struct timespec 85 - ``timestamp`` 86 - ``timestamp`` 86 - Event timestamp. The timestamp has bee 87 - Event timestamp. The timestamp has been taken from the 87 ``CLOCK_MONOTONIC`` clock. To access t 88 ``CLOCK_MONOTONIC`` clock. To access the same clock outside V4L2, 88 use :c:func:`clock_gettime`. 89 use :c:func:`clock_gettime`. 89 * - u32 90 * - u32 90 - ``id`` 91 - ``id`` 91 - The ID associated with the event sourc 92 - The ID associated with the event source. If the event does not 92 have an associated ID (this depends on 93 have an associated ID (this depends on the event type), then this 93 is 0. 94 is 0. 94 * - __u32 95 * - __u32 95 - ``reserved``\ [8] 96 - ``reserved``\ [8] 96 - Reserved for future extensions. Driver 97 - Reserved for future extensions. Drivers must set the array to 97 zero. 98 zero. 98 99 99 100 100 .. tabularcolumns:: |p{6.2cm}|p{2.6cm}|p{8.5cm !! 101 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 101 102 102 .. cssclass:: longtable 103 .. cssclass:: longtable 103 104 104 .. _event-type: 105 .. _event-type: 105 106 106 .. flat-table:: Event Types 107 .. flat-table:: Event Types 107 :header-rows: 0 108 :header-rows: 0 108 :stub-columns: 0 109 :stub-columns: 0 109 :widths: 3 1 4 110 :widths: 3 1 4 110 111 111 * - ``V4L2_EVENT_ALL`` 112 * - ``V4L2_EVENT_ALL`` 112 - 0 113 - 0 113 - All events. V4L2_EVENT_ALL is valid on 114 - All events. V4L2_EVENT_ALL is valid only for 114 VIDIOC_UNSUBSCRIBE_EVENT for unsubscri 115 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once. 115 * - ``V4L2_EVENT_VSYNC`` 116 * - ``V4L2_EVENT_VSYNC`` 116 - 1 117 - 1 117 - This event is triggered on the vertica 118 - This event is triggered on the vertical sync. This event has a 118 struct :c:type:`v4l2_event_vsync` asso 119 struct :c:type:`v4l2_event_vsync` associated 119 with it. 120 with it. 120 * - ``V4L2_EVENT_EOS`` 121 * - ``V4L2_EVENT_EOS`` 121 - 2 122 - 2 122 - This event is triggered when the end o 123 - This event is triggered when the end of a stream is reached. This 123 is typically used with MPEG decoders t 124 is typically used with MPEG decoders to report to the application 124 when the last of the MPEG stream has b 125 when the last of the MPEG stream has been decoded. 125 * - ``V4L2_EVENT_CTRL`` 126 * - ``V4L2_EVENT_CTRL`` 126 - 3 127 - 3 127 - This event requires that the ``id`` ma 128 - This event requires that the ``id`` matches the control ID from 128 which you want to receive events. This 129 which you want to receive events. This event is triggered if the 129 control's value changes, if a button c 130 control's value changes, if a button control is pressed or if the 130 control's flags change. This event has 131 control's flags change. This event has a struct 131 :c:type:`v4l2_event_ctrl` associated w 132 :c:type:`v4l2_event_ctrl` associated with it. 132 This struct contains much of the same 133 This struct contains much of the same information as struct 133 :ref:`v4l2_queryctrl <v4l2-queryctrl>` 134 :ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct 134 :c:type:`v4l2_control`. 135 :c:type:`v4l2_control`. 135 136 136 If the event is generated due to a cal 137 If the event is generated due to a call to 137 :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` o 138 :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or 138 :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT 139 :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, then the 139 event will *not* be sent to the file h 140 event will *not* be sent to the file handle that called the ioctl 140 function. This prevents nasty feedback 141 function. This prevents nasty feedback loops. If you *do* want to 141 get the event, then set the ``V4L2_EVE 142 get the event, then set the ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK`` 142 flag. 143 flag. 143 144 144 This event type will ensure that no in 145 This event type will ensure that no information is lost when more 145 events are raised than there is room i 146 events are raised than there is room internally. In that case the 146 struct :c:type:`v4l2_event_ctrl` of th 147 struct :c:type:`v4l2_event_ctrl` of the 147 second-oldest event is kept, but the ` 148 second-oldest event is kept, but the ``changes`` field of the 148 second-oldest event is ORed with the ` 149 second-oldest event is ORed with the ``changes`` field of the 149 oldest event. 150 oldest event. 150 * - ``V4L2_EVENT_FRAME_SYNC`` 151 * - ``V4L2_EVENT_FRAME_SYNC`` 151 - 4 152 - 4 152 - Triggered immediately when the recepti 153 - Triggered immediately when the reception of a frame has begun. 153 This event has a struct 154 This event has a struct 154 :c:type:`v4l2_event_frame_sync` 155 :c:type:`v4l2_event_frame_sync` 155 associated with it. 156 associated with it. 156 157 157 If the hardware needs to be stopped in 158 If the hardware needs to be stopped in the case of a buffer 158 underrun it might not be able to gener 159 underrun it might not be able to generate this event. In such 159 cases the ``frame_sequence`` field in 160 cases the ``frame_sequence`` field in struct 160 :c:type:`v4l2_event_frame_sync` will n 161 :c:type:`v4l2_event_frame_sync` will not 161 be incremented. This causes two consec 162 be incremented. This causes two consecutive frame sequence numbers 162 to have n times frame interval in betw 163 to have n times frame interval in between them. 163 * - ``V4L2_EVENT_SOURCE_CHANGE`` 164 * - ``V4L2_EVENT_SOURCE_CHANGE`` 164 - 5 165 - 5 165 - This event is triggered when a source 166 - This event is triggered when a source parameter change is detected 166 during runtime by the video device. It 167 during runtime by the video device. It can be a runtime resolution 167 change triggered by a video decoder or 168 change triggered by a video decoder or the format change happening 168 on an input connector. This event requ 169 on an input connector. This event requires that the ``id`` matches 169 the input index (when used with a vide 170 the input index (when used with a video device node) or the pad 170 index (when used with a subdevice node 171 index (when used with a subdevice node) from which you want to 171 receive events. 172 receive events. 172 173 173 This event has a struct 174 This event has a struct 174 :c:type:`v4l2_event_src_change` 175 :c:type:`v4l2_event_src_change` 175 associated with it. The ``changes`` bi 176 associated with it. The ``changes`` bitfield denotes what has 176 changed for the subscribed pad. If mul 177 changed for the subscribed pad. If multiple events occurred before 177 application could dequeue them, then t 178 application could dequeue them, then the changes will have the 178 ORed value of all the events generated 179 ORed value of all the events generated. 179 * - ``V4L2_EVENT_MOTION_DET`` 180 * - ``V4L2_EVENT_MOTION_DET`` 180 - 6 181 - 6 181 - Triggered whenever the motion detectio 182 - Triggered whenever the motion detection state for one or more of 182 the regions changes. This event has a 183 the regions changes. This event has a struct 183 :c:type:`v4l2_event_motion_det` 184 :c:type:`v4l2_event_motion_det` 184 associated with it. 185 associated with it. 185 * - ``V4L2_EVENT_PRIVATE_START`` 186 * - ``V4L2_EVENT_PRIVATE_START`` 186 - 0x08000000 187 - 0x08000000 187 - Base event number for driver-private e 188 - Base event number for driver-private events. 188 189 189 190 190 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm !! 191 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 191 192 192 .. c:type:: v4l2_event_vsync 193 .. c:type:: v4l2_event_vsync 193 194 194 .. flat-table:: struct v4l2_event_vsync 195 .. flat-table:: struct v4l2_event_vsync 195 :header-rows: 0 196 :header-rows: 0 196 :stub-columns: 0 197 :stub-columns: 0 197 :widths: 1 1 2 198 :widths: 1 1 2 198 199 199 * - __u8 200 * - __u8 200 - ``field`` 201 - ``field`` 201 - The upcoming field. See enum :c:type:` 202 - The upcoming field. See enum :c:type:`v4l2_field`. 202 203 203 204 204 .. tabularcolumns:: |p{3.5cm}|p{3.0cm}|p{10.8c !! 205 .. tabularcolumns:: |p{3.5cm}|p{3.0cm}|p{1.8cm}|p{8.5cm}| 205 206 206 .. c:type:: v4l2_event_ctrl 207 .. c:type:: v4l2_event_ctrl 207 208 208 .. flat-table:: struct v4l2_event_ctrl 209 .. flat-table:: struct v4l2_event_ctrl 209 :header-rows: 0 210 :header-rows: 0 210 :stub-columns: 0 211 :stub-columns: 0 211 :widths: 1 1 2 212 :widths: 1 1 2 212 213 213 * - __u32 214 * - __u32 214 - ``changes`` 215 - ``changes`` 215 - A bitmask that tells what has changed. 216 - A bitmask that tells what has changed. See 216 :ref:`ctrl-changes-flags`. 217 :ref:`ctrl-changes-flags`. 217 * - __u32 218 * - __u32 218 - ``type`` 219 - ``type`` 219 - The type of the control. See enum 220 - The type of the control. See enum 220 :c:type:`v4l2_ctrl_type`. 221 :c:type:`v4l2_ctrl_type`. 221 * - union { 222 * - union { 222 - (anonymous) 223 - (anonymous) 223 * - __s32 224 * - __s32 224 - ``value`` 225 - ``value`` 225 - The 32-bit value of the control for 32 226 - The 32-bit value of the control for 32-bit control types. This is 226 0 for string controls since the value 227 0 for string controls since the value of a string cannot be passed 227 using :ref:`VIDIOC_DQEVENT`. 228 using :ref:`VIDIOC_DQEVENT`. 228 * - __s64 229 * - __s64 229 - ``value64`` 230 - ``value64`` 230 - The 64-bit value of the control for 64 231 - The 64-bit value of the control for 64-bit control types. 231 * - } 232 * - } 232 - 233 - 233 * - __u32 234 * - __u32 234 - ``flags`` 235 - ``flags`` 235 - The control flags. See :ref:`control-f 236 - The control flags. See :ref:`control-flags`. 236 * - __s32 237 * - __s32 237 - ``minimum`` 238 - ``minimum`` 238 - The minimum value of the control. See 239 - The minimum value of the control. See struct 239 :ref:`v4l2_queryctrl <v4l2-queryctrl>` 240 :ref:`v4l2_queryctrl <v4l2-queryctrl>`. 240 * - __s32 241 * - __s32 241 - ``maximum`` 242 - ``maximum`` 242 - The maximum value of the control. See 243 - The maximum value of the control. See struct 243 :ref:`v4l2_queryctrl <v4l2-queryctrl>` 244 :ref:`v4l2_queryctrl <v4l2-queryctrl>`. 244 * - __s32 245 * - __s32 245 - ``step`` 246 - ``step`` 246 - The step value of the control. See str 247 - The step value of the control. See struct 247 :ref:`v4l2_queryctrl <v4l2-queryctrl>` 248 :ref:`v4l2_queryctrl <v4l2-queryctrl>`. 248 * - __s32 249 * - __s32 249 - ``default_value`` 250 - ``default_value`` 250 - The default value of the control. See 251 - The default value of the control. See struct 251 :ref:`v4l2_queryctrl <v4l2-queryctrl>` 252 :ref:`v4l2_queryctrl <v4l2-queryctrl>`. 252 253 253 254 254 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm !! 255 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 255 256 256 .. c:type:: v4l2_event_frame_sync 257 .. c:type:: v4l2_event_frame_sync 257 258 258 .. flat-table:: struct v4l2_event_frame_sync 259 .. flat-table:: struct v4l2_event_frame_sync 259 :header-rows: 0 260 :header-rows: 0 260 :stub-columns: 0 261 :stub-columns: 0 261 :widths: 1 1 2 262 :widths: 1 1 2 262 263 263 * - __u32 264 * - __u32 264 - ``frame_sequence`` 265 - ``frame_sequence`` 265 - The sequence number of the frame being 266 - The sequence number of the frame being received. 266 267 267 268 268 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm !! 269 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 269 270 270 .. c:type:: v4l2_event_src_change 271 .. c:type:: v4l2_event_src_change 271 272 272 .. flat-table:: struct v4l2_event_src_change 273 .. flat-table:: struct v4l2_event_src_change 273 :header-rows: 0 274 :header-rows: 0 274 :stub-columns: 0 275 :stub-columns: 0 275 :widths: 1 1 2 276 :widths: 1 1 2 276 277 277 * - __u32 278 * - __u32 278 - ``changes`` 279 - ``changes`` 279 - A bitmask that tells what has changed. 280 - A bitmask that tells what has changed. See 280 :ref:`src-changes-flags`. 281 :ref:`src-changes-flags`. 281 282 282 283 283 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm !! 284 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 284 285 285 .. c:type:: v4l2_event_motion_det 286 .. c:type:: v4l2_event_motion_det 286 287 287 .. flat-table:: struct v4l2_event_motion_det 288 .. flat-table:: struct v4l2_event_motion_det 288 :header-rows: 0 289 :header-rows: 0 289 :stub-columns: 0 290 :stub-columns: 0 290 :widths: 1 1 2 291 :widths: 1 1 2 291 292 292 * - __u32 293 * - __u32 293 - ``flags`` 294 - ``flags`` 294 - Currently only one flag is available: 295 - Currently only one flag is available: if 295 ``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is 296 ``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is set, then the 296 ``frame_sequence`` field is valid, oth 297 ``frame_sequence`` field is valid, otherwise that field should be 297 ignored. 298 ignored. 298 * - __u32 299 * - __u32 299 - ``frame_sequence`` 300 - ``frame_sequence`` 300 - The sequence number of the frame being 301 - The sequence number of the frame being received. Only valid if the 301 ``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` fl 302 ``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` flag was set. 302 * - __u32 303 * - __u32 303 - ``region_mask`` 304 - ``region_mask`` 304 - The bitmask of the regions that report 305 - The bitmask of the regions that reported motion. There is at least 305 one region. If this field is 0, then n 306 one region. If this field is 0, then no motion was detected at 306 all. If there is no ``V4L2_CID_DETECT_ 307 all. If there is no ``V4L2_CID_DETECT_MD_REGION_GRID`` control 307 (see :ref:`detect-controls`) to assign 308 (see :ref:`detect-controls`) to assign a different region to 308 each cell in the motion detection grid 309 each cell in the motion detection grid, then that all cells are 309 automatically assigned to the default 310 automatically assigned to the default region 0. 310 311 311 312 312 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm !! 313 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 313 314 314 .. _ctrl-changes-flags: 315 .. _ctrl-changes-flags: 315 316 316 .. flat-table:: Control Changes 317 .. flat-table:: Control Changes 317 :header-rows: 0 318 :header-rows: 0 318 :stub-columns: 0 319 :stub-columns: 0 319 :widths: 3 1 4 320 :widths: 3 1 4 320 321 321 * - ``V4L2_EVENT_CTRL_CH_VALUE`` 322 * - ``V4L2_EVENT_CTRL_CH_VALUE`` 322 - 0x0001 323 - 0x0001 323 - This control event was triggered becau 324 - This control event was triggered because the value of the control 324 changed. Special cases: Volatile contr 325 changed. Special cases: Volatile controls do no generate this 325 event; If a control has the ``V4L2_CTR 326 event; If a control has the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE`` 326 flag set, then this event is sent as w 327 flag set, then this event is sent as well, regardless its value. 327 * - ``V4L2_EVENT_CTRL_CH_FLAGS`` 328 * - ``V4L2_EVENT_CTRL_CH_FLAGS`` 328 - 0x0002 329 - 0x0002 329 - This control event was triggered becau 330 - This control event was triggered because the control flags 330 changed. 331 changed. 331 * - ``V4L2_EVENT_CTRL_CH_RANGE`` 332 * - ``V4L2_EVENT_CTRL_CH_RANGE`` 332 - 0x0004 333 - 0x0004 333 - This control event was triggered becau 334 - This control event was triggered because the minimum, maximum, 334 step or the default value of the contr 335 step or the default value of the control changed. 335 * - ``V4L2_EVENT_CTRL_CH_DIMENSIONS`` << 336 - 0x0008 << 337 - This control event was triggered becau << 338 control changed. Note that the number << 339 same. << 340 336 341 337 342 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm !! 338 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 343 339 344 .. _src-changes-flags: 340 .. _src-changes-flags: 345 341 346 .. flat-table:: Source Changes 342 .. flat-table:: Source Changes 347 :header-rows: 0 343 :header-rows: 0 348 :stub-columns: 0 344 :stub-columns: 0 349 :widths: 3 1 4 345 :widths: 3 1 4 350 346 351 * - ``V4L2_EVENT_SRC_CH_RESOLUTION`` 347 * - ``V4L2_EVENT_SRC_CH_RESOLUTION`` 352 - 0x0001 348 - 0x0001 353 - This event gets triggered when a resol 349 - This event gets triggered when a resolution change is detected at 354 an input. This can come from an input 350 an input. This can come from an input connector or from a video 355 decoder. Applications will have to que 351 decoder. Applications will have to query the new resolution (if 356 any, the signal may also have been los 352 any, the signal may also have been lost). 357 353 358 For stateful decoders follow the guide 354 For stateful decoders follow the guidelines in :ref:`decoder`. 359 Video Capture devices have to query th 355 Video Capture devices have to query the new timings using 360 :ref:`VIDIOC_QUERY_DV_TIMINGS` or 356 :ref:`VIDIOC_QUERY_DV_TIMINGS` or 361 :ref:`VIDIOC_QUERYSTD <VIDIOC_QUERYSTD 357 :ref:`VIDIOC_QUERYSTD <VIDIOC_QUERYSTD>`. 362 358 363 *Important*: even if the new video tim 359 *Important*: even if the new video timings appear identical to the old 364 ones, receiving this event indicates t 360 ones, receiving this event indicates that there was an issue with the 365 video signal and you must stop and res 361 video signal and you must stop and restart streaming 366 (:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAM 362 (:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` 367 followed by :ref:`VIDIOC_STREAMON <VID 363 followed by :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>`). The reason is 368 that many Video Capture devices are no 364 that many Video Capture devices are not able to recover from a temporary 369 loss of signal and so restarting strea 365 loss of signal and so restarting streaming I/O is required in order for 370 the hardware to synchronize to the vid 366 the hardware to synchronize to the video signal. 371 367 372 Return Value 368 Return Value 373 ============ 369 ============ 374 370 375 On success 0 is returned, on error -1 and the 371 On success 0 is returned, on error -1 and the ``errno`` variable is set 376 appropriately. The generic error codes are des 372 appropriately. The generic error codes are described at the 377 :ref:`Generic Error Codes <gen-errors>` chapte 373 :ref:`Generic Error Codes <gen-errors>` chapter.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.