| .. 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. |