[media] v4l: add buffer exporting via dmabuf
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. Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Tested-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
		
					parent
					
						
							
								c60520fa50
							
						
					
				
			
			
				commit
				
					
						b799d09a15
					
				
			
		
					 5 changed files with 42 additions and 0 deletions
				
			
		|  | @ -694,6 +694,33 @@ struct v4l2_buffer { | |||
| #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE	0x0800 | ||||
| #define V4L2_BUF_FLAG_NO_CACHE_CLEAN		0x1000 | ||||
| 
 | ||||
| /**
 | ||||
|  * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | ||||
|  * | ||||
|  * @index:	id number of the buffer | ||||
|  * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for | ||||
|  *		multiplanar buffers); | ||||
|  * @plane:	index of the plane to be exported, 0 for single plane queues | ||||
|  * @flags:	flags for newly created file, currently only O_CLOEXEC is | ||||
|  *		supported, refer to manual of open syscall for more details | ||||
|  * @fd:		file descriptor associated with DMABUF (set by driver) | ||||
|  * | ||||
|  * Contains data used for exporting a video buffer as DMABUF file descriptor. | ||||
|  * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | ||||
|  * (identical to the cookie used to mmap() the buffer to userspace). All | ||||
|  * reserved fields must be set to zero. The field reserved0 is expected to | ||||
|  * become a structure 'type' allowing an alternative layout of the structure | ||||
|  * content. Therefore this field should not be used for any other extensions. | ||||
|  */ | ||||
| struct v4l2_exportbuffer { | ||||
| 	__u32		type; /* enum v4l2_buf_type */ | ||||
| 	__u32		index; | ||||
| 	__u32		plane; | ||||
| 	__u32		flags; | ||||
| 	__s32		fd; | ||||
| 	__u32		reserved[11]; | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  *	O V E R L A Y   P R E V I E W | ||||
|  */ | ||||
|  | @ -1895,6 +1922,7 @@ struct v4l2_create_buffers { | |||
| #define VIDIOC_S_FBUF		 _IOW('V', 11, struct v4l2_framebuffer) | ||||
| #define VIDIOC_OVERLAY		 _IOW('V', 14, int) | ||||
| #define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer) | ||||
| #define VIDIOC_EXPBUF		_IOWR('V', 16, struct v4l2_exportbuffer) | ||||
| #define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer) | ||||
| #define VIDIOC_STREAMON		 _IOW('V', 18, int) | ||||
| #define VIDIOC_STREAMOFF	 _IOW('V', 19, int) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tomasz Stanislawski
				Tomasz Stanislawski