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