vidioc-querybuf.rst 2.5 KB
Newer Older
1 2
.. -*- coding: utf-8; mode: rst -*-

3
.. _VIDIOC_QUERYBUF:
4 5 6 7 8

*********************
ioctl VIDIOC_QUERYBUF
*********************

9
Name
10
====
11

12
VIDIOC_QUERYBUF - Query the status of a buffer
13

14 15

Synopsis
16 17
========

18 19
.. c:function:: int ioctl( int fd, VIDIOC_QUERYBUF, struct v4l2_buffer *argp )
    :name: VIDIOC_QUERYBUF
20

21

22
Arguments
23 24 25 26 27 28 29 30
=========

``fd``
    File descriptor returned by :ref:`open() <func-open>`.

``argp``


31
Description
32 33 34 35
===========

This ioctl is part of the :ref:`streaming <mmap>` I/O method. It can
be used to query the status of a buffer at any time after buffers have
36
been allocated with the :ref:`VIDIOC_REQBUFS` ioctl.
37 38 39 40 41 42 43

Applications set the ``type`` field of a struct
:ref:`v4l2_buffer <v4l2-buffer>` to the same buffer type as was
previously used with struct :ref:`v4l2_format <v4l2-format>` ``type``
and struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``,
and the ``index`` field. Valid index numbers range from zero to the
number of buffers allocated with
44
:ref:`VIDIOC_REQBUFS` (struct
45 46 47 48 49 50
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``count``) minus
one. The ``reserved`` and ``reserved2`` fields must be set to 0. When
using the :ref:`multi-planar API <planar-apis>`, the ``m.planes``
field must contain a userspace pointer to an array of struct
:ref:`v4l2_plane <v4l2-plane>` and the ``length`` field has to be set
to the number of elements in that array. After calling
51
:ref:`VIDIOC_QUERYBUF` with a pointer to this structure drivers return an
52 53 54 55 56 57 58 59 60 61 62 63 64 65
error code or fill the rest of the structure.

In the ``flags`` field the ``V4L2_BUF_FLAG_MAPPED``,
``V4L2_BUF_FLAG_PREPARED``, ``V4L2_BUF_FLAG_QUEUED`` and
``V4L2_BUF_FLAG_DONE`` flags will be valid. The ``memory`` field will be
set to the current I/O method. For the single-planar API, the
``m.offset`` contains the offset of the buffer from the start of the
device memory, the ``length`` field its size. For the multi-planar API,
fields ``m.mem_offset`` and ``length`` in the ``m.planes`` array
elements will be used instead and the ``length`` field of struct
:ref:`v4l2_buffer <v4l2-buffer>` is set to the number of filled-in
array elements. The driver may or may not set the remaining fields and
flags, they are meaningless in this context.

66
The :ref:`struct v4l2_buffer <v4l2-buffer>` structure is specified in
67 68 69
:ref:`buffer`.


70
Return Value
71 72 73 74 75 76 77 78 79
============

On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.

EINVAL
    The buffer ``type`` is not supported, or the ``index`` is out of
    bounds.