This patch adds extension to V4L2 api. A new ioctl VIDIOC_EXPBUF is added. The ioctl is used to export an mmap buffer as a DMABUF file descriptor.
Showing the changes to include/uapi/linux (1 of 5 files). Show all
Unified · Split
| @@ -694,6 +694,33 @@ struct v4l2_buffer { · 693 unmodified lines | ||
| 694 | 694 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800 |
| 695 | 695 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000 |
| 696 | 696 | |
| 697 | +/** | |
| 698 | + * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | |
| 699 | + * | |
| 700 | + * @index: id number of the buffer | |
| 701 | + * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for | |
| 702 | + * multiplanar buffers); | |
| 703 | + * @plane: index of the plane to be exported, 0 for single plane queues | |
| 704 | + * @flags: flags for newly created file, currently only O_CLOEXEC is | |
| 705 | + * supported, refer to manual of open syscall for more details | |
| 706 | + * @fd: file descriptor associated with DMABUF (set by driver) | |
| 707 | + * | |
| 708 | + * Contains data used for exporting a video buffer as DMABUF file descriptor. | |
| 709 | + * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | |
| 710 | + * (identical to the cookie used to mmap() the buffer to userspace). All | |
| 711 | + * reserved fields must be set to zero. The field reserved0 is expected to | |
| 712 | + * become a structure 'type' allowing an alternative layout of the structure | |
| 713 | + * content. Therefore this field should not be used for any other extensions. | |
| 714 | + */ | |
| 715 | +struct v4l2_exportbuffer { | |
| 716 | + __u32 type; /* enum v4l2_buf_type */ | |
| 717 | + __u32 index; | |
| 718 | + __u32 plane; | |
| 719 | + __u32 flags; | |
| 720 | + __s32 fd; | |
| 721 | + __u32 reserved[11]; | |
| 722 | +}; | |
| 723 | + | |
| 697 | 724 | /* |
| 698 | 725 | * O V E R L A Y P R E V I E W |
| 699 | 726 | */ |
| @@ -1895,6 +1922,7 @@ struct v4l2_create_buffers { · 1195 unmodified lines | ||
| 1895 | 1922 | #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) |
| 1896 | 1923 | #define VIDIOC_OVERLAY _IOW('V', 14, int) |
| 1897 | 1924 | #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) |
| 1925 | +#define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer) | |
| 1898 | 1926 | #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) |
| 1899 | 1927 | #define VIDIOC_STREAMON _IOW('V', 18, int) |
| 1900 | 1928 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) |