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_QUERYBUF: 4 .. _VIDIOC_QUERYBUF: 5 5 6 ********************* 6 ********************* 7 ioctl VIDIOC_QUERYBUF 7 ioctl VIDIOC_QUERYBUF 8 ********************* 8 ********************* 9 9 10 Name 10 Name 11 ==== 11 ==== 12 12 13 VIDIOC_QUERYBUF - Query the status of a buffer 13 VIDIOC_QUERYBUF - Query the status of a buffer 14 14 15 Synopsis 15 Synopsis 16 ======== 16 ======== 17 17 18 .. c:macro:: VIDIOC_QUERYBUF 18 .. c:macro:: VIDIOC_QUERYBUF 19 19 20 ``int ioctl(int fd, VIDIOC_QUERYBUF, struct v4 20 ``int ioctl(int fd, VIDIOC_QUERYBUF, struct v4l2_buffer *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_buffer`. 29 Pointer to struct :c:type:`v4l2_buffer`. 30 30 31 Description 31 Description 32 =========== 32 =========== 33 33 34 This ioctl is part of the :ref:`streaming <mma 34 This ioctl is part of the :ref:`streaming <mmap>` I/O method. It can 35 be used to query the status of a buffer at any 35 be used to query the status of a buffer at any time after buffers have 36 been allocated with the :ref:`VIDIOC_REQBUFS` 36 been allocated with the :ref:`VIDIOC_REQBUFS` ioctl. 37 37 38 Applications set the ``type`` field of a struc 38 Applications set the ``type`` field of a struct 39 :c:type:`v4l2_buffer` to the same buffer type 39 :c:type:`v4l2_buffer` to the same buffer type as was 40 previously used with struct :c:type:`v4l2_form 40 previously used with struct :c:type:`v4l2_format` ``type`` 41 and struct :c:type:`v4l2_requestbuffers` ``typ 41 and struct :c:type:`v4l2_requestbuffers` ``type``, 42 and the ``index`` field. Valid index numbers r 42 and the ``index`` field. Valid index numbers range from zero to the 43 number of buffers allocated with 43 number of buffers allocated with 44 :ref:`VIDIOC_REQBUFS` (struct 44 :ref:`VIDIOC_REQBUFS` (struct 45 :c:type:`v4l2_requestbuffers` ``count``) minus 45 :c:type:`v4l2_requestbuffers` ``count``) minus 46 one. The ``reserved`` and ``reserved2`` fields 46 one. The ``reserved`` and ``reserved2`` fields must be set to 0. When 47 using the :ref:`multi-planar API <planar-apis> 47 using the :ref:`multi-planar API <planar-apis>`, the ``m.planes`` 48 field must contain a userspace pointer to an a 48 field must contain a userspace pointer to an array of struct 49 :c:type:`v4l2_plane` and the ``length`` field 49 :c:type:`v4l2_plane` and the ``length`` field has to be set 50 to the number of elements in that array. After 50 to the number of elements in that array. After calling 51 :ref:`VIDIOC_QUERYBUF` with a pointer to this 51 :ref:`VIDIOC_QUERYBUF` with a pointer to this structure drivers return an 52 error code or fill the rest of the structure. 52 error code or fill the rest of the structure. 53 53 54 In the ``flags`` field the ``V4L2_BUF_FLAG_MAP 54 In the ``flags`` field the ``V4L2_BUF_FLAG_MAPPED``, 55 ``V4L2_BUF_FLAG_PREPARED``, ``V4L2_BUF_FLAG_QU 55 ``V4L2_BUF_FLAG_PREPARED``, ``V4L2_BUF_FLAG_QUEUED`` and 56 ``V4L2_BUF_FLAG_DONE`` flags will be valid. Th 56 ``V4L2_BUF_FLAG_DONE`` flags will be valid. The ``memory`` field will be 57 set to the current I/O method. For the single- 57 set to the current I/O method. For the single-planar API, the 58 ``m.offset`` contains the offset of the buffer 58 ``m.offset`` contains the offset of the buffer from the start of the 59 device memory, the ``length`` field its size. 59 device memory, the ``length`` field its size. For the multi-planar API, 60 fields ``m.mem_offset`` and ``length`` in the 60 fields ``m.mem_offset`` and ``length`` in the ``m.planes`` array 61 elements will be used instead and the ``length 61 elements will be used instead and the ``length`` field of struct 62 :c:type:`v4l2_buffer` is set to the number of 62 :c:type:`v4l2_buffer` is set to the number of filled-in 63 array elements. The driver may or may not set 63 array elements. The driver may or may not set the remaining fields and 64 flags, they are meaningless in this context. 64 flags, they are meaningless in this context. 65 65 66 The struct :c:type:`v4l2_buffer` structure is 66 The struct :c:type:`v4l2_buffer` structure is specified in 67 :ref:`buffer`. 67 :ref:`buffer`. 68 68 69 Return Value 69 Return Value 70 ============ 70 ============ 71 71 72 On success 0 is returned, on error -1 and the 72 On success 0 is returned, on error -1 and the ``errno`` variable is set 73 appropriately. The generic error codes are des 73 appropriately. The generic error codes are described at the 74 :ref:`Generic Error Codes <gen-errors>` chapte 74 :ref:`Generic Error Codes <gen-errors>` chapter. 75 75 76 EINVAL 76 EINVAL 77 The buffer ``type`` is not supported, or t 77 The buffer ``type`` is not supported, or the ``index`` is out of 78 bounds. 78 bounds.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.