v4l2 buffer

vivi.c

static int vidioc_reqbufs(struct file *file, void *priv,
              struct v4l2_requestbuffers *p)
--> videobuf_reqbufs(&dev->vb_vidq, p);
------->q->ops->buf_setup(q, &count, &size);

static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *p)
-->int videobuf_qbuf(struct videobuf_queue *q, struct v4l2_buffer *b)
------>    retval = q->ops->buf_prepare(q, buf, field);
------> q->ops->buf_queue(q, buf);


    struct vb2_queue       vb_vidq; //interaction with user space
    struct vivi_dmaqueue       vidq; //interaction with hardware

int vb2_qbuf(struct vb2_queue *q, struct v4l2_buffer *b)
---> __enqueue_in_driver(vb);
------->q->ops->buf_queue(vb);

static void buffer_queue(struct vb2_buffer *vb)
---->list_add_tail(&buf->list, &vidq->active); //add buffer to dma free buffer queue


buf = list_entry(dma_q->active.next, struct vivi_buffer, list);//get a free buffer
list_del(&buf->list);
vivi_fillbuff(dev, buf);/* Fill buffer */
vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE);//send notification to user the buffer is filled
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值