V4L2采集数据帧相关:“指向数据帧的指针与数据帧长度”
在影射结束后我们可以得到每一帧数据的“指针”与 “长度” ,通过这些数据我们可以访问与发送采集到的每一帧数据。“长度”项数据是存于相关结构体struct v4l2_buffer中。
#include<videodev2.h>
struct v4l2_buffer
{
__u32 index;
enum v4l2_buf_type type;
__u32 bytesused; //记录一帧数据的长
__u32 flags;
enum v4l2_field field;
struct timeval timestamp;
struct v4l2_timecode timecode;
__u32 sequence;
/* memory location */
enum v4l2_memory memory;
union {
__u32 offset;
unsigned long userptr;
} m;
__u32 length;
__u32 input;
__u32 reserved;
};
而指向这一帧的指针(start)由映射mmap返回:“mmap(NULL, buf.length,PROT_READ | PROT_WRITE,MAP_SHARED,fd, buf.m.offset);”
我们可以使用这两项重要数据,来进行图片的采集与发送。