Linuxv4l2架构学习总链接gitee源码VIDIOC_DQBUF同样的先去看从应用调用vivi驱动分析v4l2–缓存放入队列那到缓冲区信息的代码可以看__fill_v4l2_bufferstaticvoid__fill_v4l2_buffer{structv4l2_buffer*b=pb;structvb2_v4l2_buffer*vbuf=to_vb2_v4l2_buffer;structvb2_queue*q=vb->vb2_queue;unsignedintplane;/*Copybackdatasuchastimestamp,flags,etc.*/b->index=vb->index;b->type=vb->type;b->memory=vb->memory;b->bytesused=0;b->flags=vbuf->flags;b->field=vbuf->field;b->timestamp=ns_to_timeval;b->timecode=vbuf->timecode;b->sequence=vbuf->sequence;b->reserved2=0;b->reserved=0;if{/**Fillinplane-relateddataifuserspaceprovidedanarray*forit.Thecallerhasalreadyverifiedmemoryandsize.*/b->length=vb->num_planes;for{structv4l2_plane*pdst=&b->m.planes[plane];structvb2_plane*psrc=&vb->planes[plane];pdst->bytesused=psrc->bytesused;pdst->length=psrc->length;ifpdst->m.mem_offset=psrc->m.offset;elseifpdst->m.userptr=psrc->m.userptr;elseifpdst->m.fd=psrc->m.fd;pdst->data_offset=psrc->data_offset;memset);}}else{...}
这里可以看到,本次ioctl实际上是填充了所有的plane的信息,也就是说当前buffer中的所有plane对应的缓冲区中都填充了framebuff的数据。
编写对应的应用代码
文章为作者独立观点,不代表股票交易接口观点