7.53. ioctl VIDIOC_REMOVE_BUFS¶
7.53.1. 名称¶
VIDIOC_REMOVE_BUFS - 从队列中移除缓冲区
7.53.2. 概要¶
-
VIDIOC_REMOVE_BUFS¶
int ioctl(int fd, VIDIOC_REMOVE_BUFS, struct v4l2_remove_buffers *argp)
7.53.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向结构体
v4l2_remove_buffers
的指针。
7.53.4. 描述¶
应用程序可以选择调用 ioctl VIDIOC_REMOVE_BUFS ioctl 从队列中移除缓冲区。启用 ioctl VIDIOC_REMOVE_BUFS 必须支持 ioctl VIDIOC_CREATE_BUFS。如果 VIDIOC_REQBUFS()
或 VIDIOC_CREATE_BUFS()
被调用时,队列上设置了 V4L2_BUF_CAP_SUPPORTS_REMOVE_BUFS
功能,则此 ioctl 可用。
-
type v4l2_remove_buffers¶
__u32 |
|
要移除的起始缓冲区索引。如果 count == 0,则忽略此字段。 |
__u32 |
|
要移除的缓冲区数量,索引从 “index” 到 “index + count - 1”。此范围内的所有缓冲区必须有效且处于 DEQUEUED 状态。 ioctl VIDIOC_REMOVE_BUFS 将始终检查 |
__u32 |
|
流或缓冲区的类型,这与结构体 |
__u32 |
|
为未来的扩展预留的位置。驱动程序和应用程序必须将该数组设置为零。 |
7.53.5. 返回值¶
成功时返回 0,失败时返回 -1,并适当地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。如果发生错误,则不会释放任何缓冲区,并且将返回以下错误代码之一
- EBUSY
文件 I/O 正在进行中。范围从
index
到index + count - 1
的一个或多个缓冲区未处于 DEQUEUED 状态。- EINVAL
范围从
index
到index + count - 1
的一个或多个缓冲区在队列中不存在。缓冲区类型(type
字段)无效。