每次调用qbuf 和 vidioc_streamon 时候都会查询,如果这两个条件都成立,则调用q->ops->buf_queue 将 核心中的vb2_buffer调如我们写的驱动中,放入一个列表, 在vivi中 周期性的调用函数向这个列表中的vb缓冲区中添加数据 即向vb2_buffer->planes中添加数据 ,然后后调用 vb2_buffer_done(&vb, VB2_BUF_STATE_DO...
= VB2_BUF_STATE_ACTIVE) continue; // stream->queued_list保存了msm_vb2,里面的状态in_freeq,以及v4l2_buf.index/state msm_vb2->in_freeq = 1;//get是将in_freeq = 1; goto end; } } 二: static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, unsigned int stream_id) { ...