2016-06-30 15:18:56 +02:00
.. -*- coding: utf-8; mode: rst -*-
2016-07-01 13:42:29 -03:00
.. _VIDIOC_QUERYBUF:
2016-06-30 15:18:56 +02:00
***** ***** ***** ***** *
ioctl VIDIOC_QUERYBUF
***** ***** ***** ***** *
2016-07-05 15:14:35 -03:00
Name
2016-07-05 07:58:48 -03:00
====
2016-06-30 15:18:56 +02:00
2016-07-05 07:58:48 -03:00
VIDIOC_QUERYBUF - Query the status of a buffer
2016-06-30 15:18:56 +02:00
2016-07-05 15:14:35 -03:00
Synopsis
2016-06-30 15:18:56 +02:00
========
2016-08-19 16:53:38 -03:00
.. c:function :: int ioctl( int fd, VIDIOC_QUERYBUF, struct v4l2_buffer *argp )
:name: VIDIOC_QUERYBUF
2016-06-30 15:18:56 +02:00
2016-07-05 07:58:48 -03:00
2016-07-05 15:14:35 -03:00
Arguments
2016-06-30 15:18:56 +02:00
=========
`` fd ``
File descriptor returned by :ref: `open() <func-open>` .
`` argp ``
2017-09-02 09:54:48 -04:00
Pointer to struct :c:type: `v4l2_buffer` .
2016-06-30 15:18:56 +02:00
2016-07-05 15:14:35 -03:00
Description
2016-06-30 15:18:56 +02:00
===========
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
2016-07-01 13:58:44 -03:00
been allocated with the :ref: `VIDIOC_REQBUFS` ioctl.
2016-06-30 15:18:56 +02:00
Applications set the `` type `` field of a struct
2016-08-29 17:37:59 -03:00
:c:type: `v4l2_buffer` to the same buffer type as was
previously used with struct :c:type: `v4l2_format` `` type ``
and struct :c:type: `v4l2_requestbuffers` `` type `` ,
2016-06-30 15:18:56 +02:00
and the `` index `` field. Valid index numbers range from zero to the
number of buffers allocated with
2016-07-01 13:58:44 -03:00
:ref: `VIDIOC_REQBUFS` (struct
2016-08-29 17:37:59 -03:00
:c:type: `v4l2_requestbuffers` `` count `` ) minus
2016-06-30 15:18:56 +02:00
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
2016-08-29 17:37:59 -03:00
:c:type: `v4l2_plane` and the `` length `` field has to be set
2016-06-30 15:18:56 +02:00
to the number of elements in that array. After calling
2016-07-01 14:33:56 -03:00
:ref: `VIDIOC_QUERYBUF` with a pointer to this structure drivers return an
2016-06-30 15:18:56 +02:00
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
2016-08-29 17:37:59 -03:00
:c:type: `v4l2_buffer` is set to the number of filled-in
2016-06-30 15:18:56 +02:00
array elements. The driver may or may not set the remaining fields and
flags, they are meaningless in this context.
2016-09-08 05:43:01 -03:00
The struct :c:type: `v4l2_buffer` structure is specified in
2016-06-30 15:18:56 +02:00
:ref: `buffer` .
2016-07-05 15:14:35 -03:00
Return Value
2016-06-30 15:18:56 +02:00
============
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.