2015-09-22 10:30:29 -03:00
/*
* videobuf2 - v4l2 . h - V4L2 driver helper framework
*
* Copyright ( C ) 2010 Samsung Electronics
*
* Author : Pawel Osciak < pawel @ osciak . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation .
*/
# ifndef _MEDIA_VIDEOBUF2_V4L2_H
# define _MEDIA_VIDEOBUF2_V4L2_H
[media] media: videobuf2: Restructure vb2_buffer
Remove v4l2 stuff - v4l2_buf, v4l2_plane - from struct vb2_buffer.
Add new member variables - bytesused, length, offset, userptr, fd,
data_offset - to struct vb2_plane in order to cover all information
of v4l2_plane.
struct vb2_plane {
<snip>
unsigned int bytesused;
unsigned int length;
union {
unsigned int offset;
unsigned long userptr;
int fd;
} m;
unsigned int data_offset;
}
Replace v4l2_buf with new member variables - index, type, memory - which
are common fields for buffer management.
struct vb2_buffer {
<snip>
unsigned int index;
unsigned int type;
unsigned int memory;
unsigned int num_planes;
struct vb2_plane planes[VIDEO_MAX_PLANES];
<snip>
};
v4l2 specific fields - flags, field, timestamp, timecode,
sequence - are moved to vb2_v4l2_buffer in videobuf2-v4l2.c
struct vb2_v4l2_buffer {
struct vb2_buffer vb2_buf;
__u32 flags;
__u32 field;
struct timeval timestamp;
struct v4l2_timecode timecode;
__u32 sequence;
};
Signed-off-by: Junghak Sung <jh1009.sung@samsung.com>
Signed-off-by: Geunyoung Kim <nenggun.kim@samsung.com>
Acked-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-09-22 10:30:30 -03:00
# include <linux/videodev2.h>
2015-09-22 10:30:29 -03:00
# include <media/videobuf2-core.h>
2015-10-06 06:37:47 -03:00
# if VB2_MAX_FRAME != VIDEO_MAX_FRAME
# error VB2_MAX_FRAME != VIDEO_MAX_FRAME
# endif
# if VB2_MAX_PLANES != VIDEO_MAX_PLANES
# error VB2_MAX_PLANES != VIDEO_MAX_PLANES
# endif
[media] media: videobuf2: Restructure vb2_buffer
Remove v4l2 stuff - v4l2_buf, v4l2_plane - from struct vb2_buffer.
Add new member variables - bytesused, length, offset, userptr, fd,
data_offset - to struct vb2_plane in order to cover all information
of v4l2_plane.
struct vb2_plane {
<snip>
unsigned int bytesused;
unsigned int length;
union {
unsigned int offset;
unsigned long userptr;
int fd;
} m;
unsigned int data_offset;
}
Replace v4l2_buf with new member variables - index, type, memory - which
are common fields for buffer management.
struct vb2_buffer {
<snip>
unsigned int index;
unsigned int type;
unsigned int memory;
unsigned int num_planes;
struct vb2_plane planes[VIDEO_MAX_PLANES];
<snip>
};
v4l2 specific fields - flags, field, timestamp, timecode,
sequence - are moved to vb2_v4l2_buffer in videobuf2-v4l2.c
struct vb2_v4l2_buffer {
struct vb2_buffer vb2_buf;
__u32 flags;
__u32 field;
struct timeval timestamp;
struct v4l2_timecode timecode;
__u32 sequence;
};
Signed-off-by: Junghak Sung <jh1009.sung@samsung.com>
Signed-off-by: Geunyoung Kim <nenggun.kim@samsung.com>
Acked-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-09-22 10:30:30 -03:00
/**
* struct vb2_v4l2_buffer - video buffer information for v4l2
* @ vb2_buf : video buffer 2
* @ flags : buffer informational flags
* @ field : enum v4l2_field ; field order of the image in the buffer
* @ timecode : frame timecode
* @ sequence : sequence count of this frame
* Should contain enough information to be able to cover all the fields
* of struct v4l2_buffer at videodev2 . h
*/
struct vb2_v4l2_buffer {
struct vb2_buffer vb2_buf ;
__u32 flags ;
__u32 field ;
struct v4l2_timecode timecode ;
__u32 sequence ;
} ;
2015-10-01 14:23:35 -03:00
/*
[media] media: videobuf2: Restructure vb2_buffer
Remove v4l2 stuff - v4l2_buf, v4l2_plane - from struct vb2_buffer.
Add new member variables - bytesused, length, offset, userptr, fd,
data_offset - to struct vb2_plane in order to cover all information
of v4l2_plane.
struct vb2_plane {
<snip>
unsigned int bytesused;
unsigned int length;
union {
unsigned int offset;
unsigned long userptr;
int fd;
} m;
unsigned int data_offset;
}
Replace v4l2_buf with new member variables - index, type, memory - which
are common fields for buffer management.
struct vb2_buffer {
<snip>
unsigned int index;
unsigned int type;
unsigned int memory;
unsigned int num_planes;
struct vb2_plane planes[VIDEO_MAX_PLANES];
<snip>
};
v4l2 specific fields - flags, field, timestamp, timecode,
sequence - are moved to vb2_v4l2_buffer in videobuf2-v4l2.c
struct vb2_v4l2_buffer {
struct vb2_buffer vb2_buf;
__u32 flags;
__u32 field;
struct timeval timestamp;
struct v4l2_timecode timecode;
__u32 sequence;
};
Signed-off-by: Junghak Sung <jh1009.sung@samsung.com>
Signed-off-by: Geunyoung Kim <nenggun.kim@samsung.com>
Acked-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-09-22 10:30:30 -03:00
* to_vb2_v4l2_buffer ( ) - cast struct vb2_buffer * to struct vb2_v4l2_buffer *
*/
# define to_vb2_v4l2_buffer(vb) \
2015-10-01 14:23:35 -03:00
container_of ( vb , struct vb2_v4l2_buffer , vb2_buf )
[media] media: videobuf2: Restructure vb2_buffer
Remove v4l2 stuff - v4l2_buf, v4l2_plane - from struct vb2_buffer.
Add new member variables - bytesused, length, offset, userptr, fd,
data_offset - to struct vb2_plane in order to cover all information
of v4l2_plane.
struct vb2_plane {
<snip>
unsigned int bytesused;
unsigned int length;
union {
unsigned int offset;
unsigned long userptr;
int fd;
} m;
unsigned int data_offset;
}
Replace v4l2_buf with new member variables - index, type, memory - which
are common fields for buffer management.
struct vb2_buffer {
<snip>
unsigned int index;
unsigned int type;
unsigned int memory;
unsigned int num_planes;
struct vb2_plane planes[VIDEO_MAX_PLANES];
<snip>
};
v4l2 specific fields - flags, field, timestamp, timecode,
sequence - are moved to vb2_v4l2_buffer in videobuf2-v4l2.c
struct vb2_v4l2_buffer {
struct vb2_buffer vb2_buf;
__u32 flags;
__u32 field;
struct timeval timestamp;
struct v4l2_timecode timecode;
__u32 sequence;
};
Signed-off-by: Junghak Sung <jh1009.sung@samsung.com>
Signed-off-by: Geunyoung Kim <nenggun.kim@samsung.com>
Acked-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-09-22 10:30:30 -03:00
2015-10-06 06:37:49 -03:00
int vb2_querybuf ( struct vb2_queue * q , struct v4l2_buffer * b ) ;
int vb2_reqbufs ( struct vb2_queue * q , struct v4l2_requestbuffers * req ) ;
int vb2_create_bufs ( struct vb2_queue * q , struct v4l2_create_buffers * create ) ;
int vb2_prepare_buf ( struct vb2_queue * q , struct v4l2_buffer * b ) ;
int vb2_qbuf ( struct vb2_queue * q , struct v4l2_buffer * b ) ;
int vb2_expbuf ( struct vb2_queue * q , struct v4l2_exportbuffer * eb ) ;
int vb2_dqbuf ( struct vb2_queue * q , struct v4l2_buffer * b , bool nonblocking ) ;
int vb2_streamon ( struct vb2_queue * q , enum v4l2_buf_type type ) ;
int vb2_streamoff ( struct vb2_queue * q , enum v4l2_buf_type type ) ;
int __must_check vb2_queue_init ( struct vb2_queue * q ) ;
void vb2_queue_release ( struct vb2_queue * q ) ;
2015-11-03 08:16:42 -02:00
unsigned int vb2_poll ( struct vb2_queue * q , struct file * file ,
poll_table * wait ) ;
2015-10-06 06:37:49 -03:00
/*
* The following functions are not part of the vb2 core API , but are simple
* helper functions that you can use in your struct v4l2_file_operations ,
* struct v4l2_ioctl_ops and struct vb2_ops . They will serialize if vb2_queue - > lock
* or video_device - > lock is set , and they will set and test vb2_queue - > owner
* to check if the calling filehandle is permitted to do the queuing operation .
*/
/* struct v4l2_ioctl_ops helpers */
int vb2_ioctl_reqbufs ( struct file * file , void * priv ,
struct v4l2_requestbuffers * p ) ;
int vb2_ioctl_create_bufs ( struct file * file , void * priv ,
struct v4l2_create_buffers * p ) ;
int vb2_ioctl_prepare_buf ( struct file * file , void * priv ,
struct v4l2_buffer * p ) ;
int vb2_ioctl_querybuf ( struct file * file , void * priv , struct v4l2_buffer * p ) ;
int vb2_ioctl_qbuf ( struct file * file , void * priv , struct v4l2_buffer * p ) ;
int vb2_ioctl_dqbuf ( struct file * file , void * priv , struct v4l2_buffer * p ) ;
int vb2_ioctl_streamon ( struct file * file , void * priv , enum v4l2_buf_type i ) ;
int vb2_ioctl_streamoff ( struct file * file , void * priv , enum v4l2_buf_type i ) ;
int vb2_ioctl_expbuf ( struct file * file , void * priv ,
struct v4l2_exportbuffer * p ) ;
/* struct v4l2_file_operations helpers */
int vb2_fop_mmap ( struct file * file , struct vm_area_struct * vma ) ;
int vb2_fop_release ( struct file * file ) ;
int _vb2_fop_release ( struct file * file , struct mutex * lock ) ;
ssize_t vb2_fop_write ( struct file * file , const char __user * buf ,
size_t count , loff_t * ppos ) ;
ssize_t vb2_fop_read ( struct file * file , char __user * buf ,
size_t count , loff_t * ppos ) ;
unsigned int vb2_fop_poll ( struct file * file , poll_table * wait ) ;
# ifndef CONFIG_MMU
unsigned long vb2_fop_get_unmapped_area ( struct file * file , unsigned long addr ,
unsigned long len , unsigned long pgoff , unsigned long flags ) ;
# endif
/* struct vb2_ops helpers, only use if vq->lock is non-NULL. */
void vb2_ops_wait_prepare ( struct vb2_queue * vq ) ;
void vb2_ops_wait_finish ( struct vb2_queue * vq ) ;
2015-09-22 10:30:29 -03:00
# endif /* _MEDIA_VIDEOBUF2_V4L2_H */