Back to Linux

ioctl VIDIOC_REMOVE_BUFS

Documentation/userspace-api/media/v4l/vidioc-remove-bufs.rst

7.02.5 KB
Original Source

.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. c:namespace:: V4L

.. _VIDIOC_REMOVE_BUFS:


ioctl VIDIOC_REMOVE_BUFS


Name

VIDIOC_REMOVE_BUFS - Removes buffers from a queue

Synopsis

.. c:macro:: VIDIOC_REMOVE_BUFS

int ioctl(int fd, VIDIOC_REMOVE_BUFS, struct v4l2_remove_buffers *argp)

Arguments

fd File descriptor returned by :c:func:open().

argp Pointer to struct :c:type:v4l2_remove_buffers.

Description

Applications can optionally call the :ref:VIDIOC_REMOVE_BUFS ioctl to remove buffers from a queue. :ref:VIDIOC_CREATE_BUFS ioctl support is mandatory to enable :ref:VIDIOC_REMOVE_BUFS. This ioctl is available if the V4L2_BUF_CAP_SUPPORTS_REMOVE_BUFS capability is set on the queue when :c:func:VIDIOC_REQBUFS or :c:func:VIDIOC_CREATE_BUFS are invoked.

.. c:type:: v4l2_remove_buffers

.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm}|

.. flat-table:: struct v4l2_remove_buffers :header-rows: 0 :stub-columns: 0 :widths: 1 1 2

* - __u32
  - ``index``
  - The starting buffer index to remove. This field is ignored if count == 0.
* - __u32
  - ``count``
  - The number of buffers to be removed with indices 'index' until 'index + count - 1'.
    All buffers in this range must be valid and in DEQUEUED state.
    :ref:`VIDIOC_REMOVE_BUFS` will always check the validity of ``type``, if it is
    invalid it returns ``EINVAL`` error code.
    If count is set to 0 :ref:`VIDIOC_REMOVE_BUFS` will do nothing and return 0.
* - __u32
  - ``type``
  - Type of the stream or buffers, this is the same as the struct
:c:type:`v4l2_format` ``type`` field. See
:c:type:`v4l2_buf_type` for valid values.
* - __u32
  - ``reserved``\ [13]
  - A place holder for future extensions. Drivers and applications
must set the array to zero.

Return Value

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. If an error occurs, no buffers will be freed and one of the error codes below will be returned:

EBUSY File I/O is in progress. One or more of the buffers in the range index to index + count - 1 are not in DEQUEUED state.

EINVAL One or more of the buffers in the range index to index + count - 1 do not exist in the queue. The buffer type (type field) is not valid.